淺談Hibernate工作方式
在向大家詳細介紹Hibernate之前,首先讓大家了解下Hibernate工作方式,以后再全面介紹Hibernate。
Hibernate工作方式
Hibernate不會對您造成妨礙,也不會強迫您修改對象的行為方式。它們不需要實現(xiàn)任何不可思議的接口以便能夠持續(xù)存在。惟一需要做的就是創(chuàng)建一份XML“映射文檔”,告訴Hibernate您希望能夠保存在數(shù)據(jù)庫中的類,以及它們?nèi)绾侮P(guān)聯(lián)到該數(shù)據(jù)庫中的表和列,然后就可以要求它以對象的形式獲取數(shù)據(jù),或者把對象保存為數(shù)據(jù)。與其他解決方案相比,它幾乎已經(jīng)很完美了。
由于本文只是一篇介紹性的文章,所以不會引入構(gòu)建和使用Hibernate映射文檔的具體例子(我在《Hibernate: A Developer's Notebook》一書的頭幾章中已經(jīng)介紹了一個例子)。此外,在網(wǎng)上和Hibernate的在線文檔中,還可以找到一些不錯的例子,請參見下面的“其他信息”部分。它實際上相當直觀。應用程序?qū)ο笾械膶傩砸砸环N簡單而自然的方式與正確的數(shù)據(jù)庫結(jié)構(gòu)相關(guān)聯(lián)。
運行時,Hibernate讀取映射文檔,然后動態(tài)構(gòu)建Java類,以便管理數(shù)據(jù)庫與Java之間的轉(zhuǎn)換。在Hibernate中有一個簡單而直觀的API,用于對數(shù)據(jù)庫所表示的對象執(zhí)行查詢。要修改這些對象,(一般情況下)只需在程序中與它們進行交互,然后告訴Hibernate保存修改即可。類似地,創(chuàng)建新對象也很簡單;只需以常規(guī)方式創(chuàng)建它們,然后告訴Hibernate有關(guān)它們的信息,這樣就能在數(shù)據(jù)庫中保存它們。
Hibernate API學習起來很簡單,而且它與程序流的交互相當自然。在適當?shù)奈恢谜{(diào)用它,就可以達成目的。它帶來了很多自動化和代碼節(jié)省方面的好處,所以花一點時間學習它是值得的。而且還可以獲得另一個好處,即代碼不用關(guān)心要使用的數(shù)據(jù)庫種類(否則的話甚至必須知道)。我所在的公司就曾有過在開發(fā)過程后期被迫更換數(shù)據(jù)庫廠商的經(jīng)歷。這會造成巨大的災難,但是借助于Hibernate,只需要簡單地修改Hibernate配置文件即可。
這里的討論假定您已經(jīng)通過創(chuàng)建Hibernate映射文檔,建立了一個關(guān)系數(shù)據(jù)庫,并且擁有要映射的Java類。有一個Hibernate“工具集”可在編譯時使用,以支持不同的工作流。例如,如果您已經(jīng)擁有Java類和映射文檔,Hibernate可以為您創(chuàng)建(或更新)必需的數(shù)據(jù)庫表?;蛘撸瑑H僅從映射文檔開始,Hibernate也能夠生成數(shù)據(jù)類。或者,它可以反向設計您的數(shù)據(jù)庫和類,從而擬定映射文檔。還有一些用于Eclipse的alpha 插件,它們可以在IDE中提供智能的編輯支持以及對這些工具的圖形訪問。
如果您使用的是Hibernate 2環(huán)境,這些工具鮮有提供,但是存在可用的第三方工具。以上介紹Hibernate工作方式。
【編輯推薦】