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




















