乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

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

       天落雨 2006-01-17

      Hibernate O/R映射三大基本定則 閱讀次數(shù)9025

      出處 不詳     



      1. 引言
      在Java環(huán)境下,有多種對象關(guān)系映射方法,如實體Bean、OJB、JDO、JDBC等。Hibernate是一種新的O/R映射工具,它不僅提供了從Java類到數(shù)據(jù)表的映射,也提供了數(shù)據(jù)查詢和恢復等機制。Hibernate非常簡單易學,目前國內(nèi)有很多同行已經(jīng)或正在用Hibernate開發(fā)實施項目;但Hibernate有很多規(guī)則不為人知或應(yīng)用甚少。本文的目的就是將這些規(guī)則歸納總結(jié),希望對您的開發(fā)和設(shè)計有益。

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

      2. 基本定則

      定則一:數(shù)據(jù)庫配置文件名稱可以不是Hibernate.properties或Hibernate.cfg.xml

      由于Hibernate官方文檔(本文指www.hibernate.org的文檔)的影響,很多Hibernate開發(fā)者誤以為系統(tǒng)一定要有名稱為Hibernate.properties或Hibernate.cfg.xml的文件,而且一定要放在classes的根目錄下。實際上,該文件只是一般的配置文件,名稱可以自己取,文件位置可以自己定,而且在多數(shù)據(jù)庫環(huán)境下,可以有多個配置文件,使得程序可以連接多個數(shù)據(jù)庫。只是您在創(chuàng)建會話工廠時需要特殊處理,代碼示例如下:

      //配置文件名稱

      protected static String CONFIG_FILE = "my_hibernate.config";

      //配置文件目錄,可以考慮在該目錄下存放系統(tǒng)所有配置文件,此處使用虛擬機參數(shù)

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

      //創(chuàng)建會話工廠

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



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

      同樣由于Hibernate官方文檔的影響,很多Hibernate開發(fā)者誤以為Hibernate的對象關(guān)系映射一定要一個表對應(yīng)一個對象,并將映射文件和對象文件放在同一目錄下。實際上,該模式是為規(guī)范性考慮而設(shè)計的,因為在多人參與的項目中,多人要維護同一文件容易產(chǎn)生沖突;當項目比較小時,配置文件的維護人員少,我們完全可以將.hbm.xml文件合并到一個或者幾個文件中。依據(jù)作者本人的項目設(shè)計開發(fā)經(jīng)驗,最好是項目中有幾人同時從事O/R映射和持久工作,則設(shè)定幾個.hbm.xml文件,每人維護一個。當然,為了便于分類和管理,每人的工作應(yīng)該按邏輯劃分。

      大型項目中的文件配置示例如下:

      <hibernate-configuration>

      <session-factory>

      <!—映射文件分散 -->

      <mapping resource="com/hongsoft/test/ persistence/Cat.hbm.xml"/>

      <mapping resource="com/hongsoft/test/ persistence/Animal.hbm.xml"/>

      </session-factory>

      </hibernate-configuration>

      小型項目中的文件配置示例如下:

      <hibernate-configuration>

      <session-factory>

      <!—映射文件集中 -->

      <mapping resource="res_hibernate_map.xml"/>

      </session-factory>

      </hibernate-configuration>

      要注意的是, 從對Hibernate源代碼的分析可知,指定映射文件時,不能用絕對目錄,只能用相對目錄;而且,系統(tǒng)以classes根目錄為當前目錄。



      定則三:對象關(guān)系映射是以.hbm.xml文件為基準的,而不是以PO文件為基準

      該定律的意思是:系統(tǒng)啟動檢查您的對象關(guān)系映射是否正確時,是以.hbm.xml為基準來進行檢查的;對象文件的property可以比映射文件的property多,但不能少。如果您有如下的映射:

      <class name="com.hongsoft.test.User" table="res_user">

      <id name="id" column="id" type="long" unsaved-value="any">

      <generator class="assigned">

      </generator>

      </id>

      <property name="name"/>

      <property name="loginName"/>

      <property name="passwd"/>

      </class>

      系統(tǒng)啟動,檢查數(shù)據(jù)庫和其他配置正確后,將以該文件為基準,首先檢查User對象中有無id屬性和對應(yīng)的get/set方法,如果沒有則報錯,如果有且正確則檢查有無name屬性和對應(yīng)的get/set方法……,直到文件結(jié)束。要注意的是,如果屬性為name,則get方法名稱必須為getName(),set方法名稱必須為setName(),否則會報錯。

      如果User對象除了有id,name,loginName, passwd四個屬性和對應(yīng)的方法,還有其它的屬性和方法,會報錯嗎?不會,因為對象關(guān)系映射是以.hbm.xml文件為基準的,而不是以PO文件為基準。您在項目中可以充分利用該特點,實現(xiàn)您自己的比較特殊的需求。例如,您可以在User對象中加入updatedPasswd表示更改后的口令,由此構(gòu)造在表示層要使用的FormBean和在業(yè)務(wù)層要使用的ValueObject。當然,這樣做也有缺點,需要根據(jù)您的實際情況而定。

      3. 總結(jié)
      上面是作者對Hibernate映射的容易理解錯誤的知識點的歸納總結(jié),希望對您有幫助。如果您發(fā)現(xiàn)有錯誤或有自己的觀點,歡迎討論。

          

       
       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多