Hibernate O/R映射三大基本定則

來源:互聯網
上載者:User
?

Hibernate O/R映射三大基本定則1.?? 引言

在Java環境下,有多種對象關係映射方法,如實體Bean、OJB、JDO、JDBC等。Hibernate是一種新的O/R映射工具,它不僅提供了從Java類到資料表的映射,也提供了資料查詢和恢複等機制。Hibernate非常簡單易學,目前國內有很多同行已經或正在用Hibernate開發實施項目;但Hibernate有很多規則不為人知或應用甚少。本文的目的就是將這些規則歸納總結,希望對您的開發和設計有益。

首先聲明,本文是Hibernate入門級文章,高手請不用往下看了。

2.?? 基本定則

定則一:資料庫設定檔名稱可以不是Hibernate.properties或Hibernate.cfg.xml

由於Hibernate官方文檔(本文指www.hibernate.org的文檔)的影響,很多Hibernate開發人員誤以為系統一定要有名稱為Hibernate.properties或Hibernate.cfg.xml的檔案,而且一定要放在classes的根目錄下。實際上,該檔案只是一般的設定檔,名稱可以自己取,檔案位置可以自己定,而且在多資料庫環境下,可以有多個設定檔,使得程式可以串連多個資料庫。只是您在建立會話工廠時需要特殊處理,程式碼範例如下:

//設定檔名稱

protected static String CONFIG_FILE = "my_hibernate.config";

//設定檔目錄,可以考慮在該目錄下存放系統所有設定檔,此處使用虛擬機器參數

String configPath = System.getProperty("my.config");?

//建立會話工廠?????

sessionFactory =( new Configuration().configure(new File(configPath+File.separator+CONFIG_FILE))) .buildSessionFactory();

?

?定則二:小型項目中,.hbm.xml檔案可以合并到一個檔案中

同樣由於Hibernate官方文檔的影響,很多Hibernate開發人員誤以為Hibernate的對象關係映射一定要一個表對應一個對象,並將對應檔和對象檔案放在同一目錄下。實際上,該模式是為規範性考慮而設計的,因為在多人蔘與的項目中,多人要維護同一檔案容易產生衝突;當項目比較小時,設定檔的維護人員少,我們完全可以將.hbm.xml檔案合并到一個或者幾個檔案中。依據作者本人的項目設計開發經驗,最好是項目中有幾人同時從事O/R映射和持久工作,則設定幾個.hbm.xml檔案,每人維護一個。當然,為了便於分類和管理,每人的工作應該按邏輯劃分。

大型項目中的檔案配置樣本如下:



小型項目中的檔案配置樣本如下:


要注意的是, 從對Hibernate原始碼的分析可知,指定對應檔時,不能用絕對目錄,只能用相對目錄;而且,系統以classes根目錄為目前的目錄。

?

定則三:對象關係映射是以.hbm.xml檔案為基準的,而不是以PO檔案為基準

該定律的意思是:系統啟動檢查您的對象關係映射是否正確時,是以.hbm.xml為基準來進行檢查的;對象檔案的property可以比對應檔的property多,但不能少。如果您有如下的映射:

???????

??????????? ???????????????

??????????? ?

???????

??????? ???

???????

??????? ???????????????????

系統啟動,檢查資料庫和其他配置正確後,將以該檔案為基準,首先檢查User對象中有無id屬性和對應的get/set方法,如果沒有則報錯,如果有且正確則檢查有無name屬性和對應的get/set方法……,直到檔案結束。要注意的是,如果屬性為name,則get方法名稱必須為getName(),set方法名稱必須為setName(),否則會報錯。

如果User對象除了有id,name,loginName, passwd四個屬性和對應的方法,還有其它的屬性和方法,會報錯嗎?不會,因為對象關係映射是以.hbm.xml檔案為基準的,而不是以PO檔案為基準。您在項目中可以充分利用該特點,實現您自己的比較特殊的需求。例如,您可以在User對象中加入updatedPasswd表示更改後的口令,由此構造在展示層要使用的FormBean和在業務層要使用的ValueObject。當然,這樣做也有缺點,需要根據您的實際情況而定。

3.?? 總結

上面是作者對Hibernate映射的容易理解錯誤的知識點的歸納總結,希望對您有協助。如果您發現有錯誤或有自己的觀點,歡迎討論。

?hongbo781202,又名HongSoft,職業程式員,研究領域:1)基於工作流程的BPM系統研究2)基於JAVA的資訊安全

技術.歡迎和大家討論JAVA相關各方面技術和市場問題 hongbosoftware@163.com

?

?

?

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.