Hibernate 中 映射關系_第1頁
Hibernate 中 映射關系_第2頁
Hibernate 中 映射關系_第3頁
Hibernate 中 映射關系_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、Hibernate中映射關系 many-to-one:描述多對一的一種數據模型,它指定many 一方是不能獨立存在的, 我個人認為many-to-one是NHB中保證數據有效性的最有用的一種映射,通過 使用many-to-one能有效的防治孤兒記錄被寫入到數據表中。在本文描述的例子 中,Student類和Classes類之間 是多對一關系.通過many-to-one元素,可以定義一種常見的與另一個持久化類的關聯(lián)。這 種關系模型是多對一關聯(lián)。(實際上是一個對象引用。)在映射文件中用 many-to-one標簽描述此種關系.name:屬性名。指出many 一方的類用哪個屬性和one 一方的類關聯(lián).

2、column:字段名(可選).指出many 一方的類對應的數據表用哪個列和one 一方的類對應的數據表關聯(lián)(兩表之間存在外鍵關聯(lián));class:關聯(lián)的類的名字(可選-默認是通過反射得到屬性類型);cascade:指明哪些操作會從父對象級聯(lián)到關聯(lián)的對象(可選).cascade 屬性允許下列值:all, save-update, delete, none.設置除了 none以外的 其它值會傳播特定的操作到關聯(lián)的(子)對象中。outer-join:當設置hibernate.use_outer_join的時候,對這個關聯(lián)允許 外連接抓?。蛇x-默認為auto). outer-join參數允許下列三個不

3、同值: auto (使用外連接抓取關聯(lián)(對象),如果被關聯(lián)的對象沒有代理(proxy), true (一直使用外連接來抓取關聯(lián)),false (永遠不使用外連接來抓取關聯(lián));update,insert:指定對應的字段是否在用于UPDATE和/或INSERT的SQL 語句中包含。如果二者都是false,則這是一個純粹的“外源性(derived)”關 聯(lián),它的值是通過映射到同一個(或多個)字段 的某些其他屬性得到的,或者 通過trigger(除法器),或者是其他程序(可選-默認為true)property-ref:指定關聯(lián)類的一個屬性,這個屬性將會和本外鍵相對應。如 果沒有指定,會使用對方關聯(lián)類的

4、主鍵(可選).property-ref屬性只應該用 來對付老舊的數據庫系統(tǒng),可能出現外鍵指向對方關聯(lián)表的是個非主鍵字段(但 是應該是一個惟一關鍵字)的情況。這是一種十分丑陋的關系模型。比如說, 假設Product類有一個惟一的序列號,它并不是主鍵;access: NHibernate用來訪問屬性的策略(可選-默認為property)unique:允許產生外鍵列唯一約束的數據庫定義語言(DDL)(可選)那么關于Student的映射可能是:只要在原Student.hbm.xml映射文件中添加many-to-one標簽就可以了.對于Sturent類得添加一個屬性Classes:Classesone-

5、to-many: 一對多也是一種常見的數據模型,在按范式設計的數據庫中隨處 可見。在NHB中通過one-to-many可以非常方便的 處理這種模型,同時NHB還 提供了級聯(lián)更新和刪除的功能,以保證數據完整性。在本文描述的例子中, Classes類和Student類是一對多的關系.Classes 類的映射文件:Classes.hbm.xmlclass name=NHibernateTest.Classes,NHibernateTest table=Classes 如映射文件所示,one-to-many標簽必須包含在標簽bag中(個人理解:多 嘛,就用一個包裝起來)bag標簽的name屬性指出Ad

6、dress對象用哪個屬性和Student對象關 聯(lián),inverse屬性使collection不更新連接(總之,這個屬性提高了性能,具 體的情況請參考NHibernate的幫助文檔).key標簽的column屬性指出了 Address對象對應的數據表用哪個字段和 Student對象對應的數據表關聯(lián)one-to-many標簽的class屬性指出了 Address和哪個對象關聯(lián).對于Classes類得創(chuàng)建一個StudentList : Student的屬性,用來描述與Student 對象的關系.many-to-many:多對多在數據庫中也是常見的數據模型,像用戶與組,用戶與權 限等。多對多關系需要通過一個中間表實現,element的就是讀取這個中間表中 某列的值。在本文的例子中,Student類和Subject類是多對多的關系.Student的映射可能是:bag name=SubjectList table=r_Student_Subject inverse=true” cascade=save-update lazy=false”在bag

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論