熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

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

2013-11-23 20:46:02  來源: Java開源技術 

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

<hibernateconfiguration>
<sessionfactory>
<!—映射文件分散 >
<mapping resource=com/hongsoft/test/ persistence/Cathbmxml/>
<mapping resource=com/hongsoft/test/ persistence/Animalhbmxml/>
</sessionfactory>
</hibernateconfiguration>
小型項目中的文件配置示例如下:
<hibernateconfiguration>
<sessionfactory>
<!—映射文件集中 >
<mapping resource=res_hibernate_mapxml/>
</sessionfactory>
</hibernateconfiguration>

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

  定則三:對象關系映射是以hbmxml文件為基准的而不是以PO文件為基准

  該定律的意思是:系統啟動檢查您的對象關系映射是否正確時是以hbmxml為基准來進行檢查的;對象文件的property可以比映射文件的property多但不能少如果您有如下的映射:

<class name=comhongsofttestUser table=res_user>
    <id name=id column=id type=long unsavedvalue=any>
      <generator class=assigned>        
      </generator> 
    </id>
    <property name=name/>  
    <property name=loginName/>
    <property name=passwd/>          
</class>

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

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

  總結

  上面是作者對Hibernate映射的容易理解錯誤的知識點的歸納總結希望對您有幫助

[]  []  


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29044.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.