Hibernate關聯關系配置_第1頁
Hibernate關聯關系配置_第2頁
Hibernate關聯關系配置_第3頁
Hibernate關聯關系配置_第4頁
Hibernate關聯關系配置_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Hbernate關聯關系配置(一對多、一對一和多對多)Hibernate 關聯關系配置第一種關聯關系:一對多(多對一)一對多是最普遍的映射關系,簡單來講就如消費者與訂單的關系。 一對多:從消費者角的度來說一個消費者可以有多個訂單,即為一對 多。多對一:從訂單的角度來說多個訂單可以對應一個消費者,即為多對一對多關系在hbm文件中的配置信息:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hiber

2、nate-mapping-3.0.dtd!-主鍵設置- generator class=uuid/generator !-屬性設置-property name = username column=usernametype=string/propertyproperty name=balance column=balance type=integer/propertyset name=orders inverse=true cascade=allkey column =customer_id /keyone-to-many class=com.suxiaolei.hibernate.pojosO

3、rder/set/class/hibernate-mapping訂單(多方):!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdgenerator class=uuid/generatorproperty name=orderNumber column=orderNumbertype=string/propertyproperty name=cos

4、t column=cost type=integer/propertymany-to-one name=customer class=com.suxiaolei.hibernate.pojos.Customerco=customer_id cascade=save-update/many-to-one/class/hibernate-mapping一對多關聯關系,Customer方對應多個Order方,所以Customer包含一個集合用于存儲多個Order, Order包含一個Customer用于儲存關聯自己的Customer。一對多關聯關系有一種特例:自身一對多關聯。例如:電子產品電腦WP7

5、IOS平板電腦筆電子產品電腦WP7IOS平板電腦筆自身一對多關聯自身的hbm文件設置:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdgenerator class=uuid/generatorproperty name=name column=name type=string/propertyset name=chidrenCategories

6、 cascade=all inverse=truekey column=category_id/keyone-to-many class=com.suxiaolei.hibernate.pojos.Category/ /setmany-to-one name=parentCategoryclass=com.suxiaolei.hibernate.pojosCategory column=category_id/many-to-one/class/hibernate-mapping外鍵存放父親的主鍵。第二種關聯關系:多對多多對多關系也很常見,例如學生與選修課之間的關系,一個學生 可以選擇多門選修

7、課,而每個選修課又可以被多名學生選擇。數據庫 中的多對多關聯關系一般需采用中間表的方式處理,將多對多轉化為 兩個一對多。數據表間多對多關系如下圖:多對多關系在hbm文件中的配置信息: 學生:!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdcolumn name=id/columngenerator class=increment/generato

8、rproperty name=name column=name type=string/propertykey column=student_id/keymany-to-many class=com.suxiaolei.hibernate.pojos.Course coli=icourse_id/many-to-many/set/class/hibernate-mapping課程:?xml version=1.0 encoding=utf-8?!DOCTYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN H

9、YPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdclass name=com.suxiaolei.hibernate.pojosCourse table=courseid name=id type=integercolumn name=id/columngenerator class=increment/generator/idproperty name=name column=name type=string/propertyset name=students inverse=true cas

10、cade=save-update table=student_coursemany-to-many class=com.suxiaolei.hibernate.pojos.Student colMistudentidx/many-to-many/set/class/hibernate-mapping其實多對多就是兩個一對多,它的配置沒什么新奇的相對于一對多。在多對多的關系設計中,一般都會使用一個中間表將他們拆分成兩個一對多。set標簽中的table屬性就是用于指定中間表的。 中間表一般包含兩個表的主鍵值,該表用于存儲兩表之間的關系。由 于被拆成了兩個一對多,中間表是多方,它是使用外鍵關聯的,k

11、ey 是用于指定外鍵的,用于從中間表取出相應的數據。中間表每一行數 據只包含了兩個關系表的主鍵,要獲取與自己關聯的對象集合,還需 要取出由外鍵所獲得的記錄中的另一個主鍵值,由它到對應的表中取 出數據,填充到集合中。manytomany 中的column屬性是 用于指定按那一列的值獲取對應的數據。例如用course表來說,它與student表使用一個中間表 student_course關聯。如果要獲取course記錄對應的學生記錄, 首先需要使用外鍵course_id從student_course表中取得相 應的數據,然后在取得的數據中使用student_id列的值,在 student表中檢索出

12、相關的student數據。其實,為了便于理解, 你可以在使用course表的使用就把中間表看成是student 表,反 之亦然。這樣就可以使用一對多的思維來理解了,多方關聯一方需要 外鍵那么在本例子中就需要course_id來關。第三種關聯關系:一對一一對一關系就球隊與球隊所在地之間的關系,一支球隊僅有一個 地址,而一個地區(qū)也僅有一支球隊(貌似有點勉強,將就下吧)。數 據表間一對一關系的表現有兩種,一種是外鍵關聯,一種是主鍵關聯。 圖示如下:一對一外鍵關聯:一對一主鍵關聯:要求兩個表的主鍵必須完全一致,通過兩個表的主 鍵建立關聯關系:一對一外鍵關聯在hbm文件中的配置信息: 地址:!DOCTY

13、PE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdcolumn name=idproperty name=city column=city type=string/propertyone-to-one name=team class=com.suxiaolei.hibernate.pojos.Teamcascade=all/one-to-one 球隊:!DOC

14、TYPE hibernate-mapping PUBLIC -/Hibernate/Hibernate Mapping DTD 3.0/EN HYPERLINK /hibernate-mapping-3.0.dtd%22%e3%80%89 /hibernate-mapping-3.0.dtdcolumn name=id/columngenerator class=increment/generator/idproperty name=name column=name type=string/propertymany-to-one name=adress class=com.suxiaolei.

15、hibernate.pojos.Adresscolumn=adress_id unique=true/many-to-one/class /hibernate-mapping一對一外鍵關聯,其實可以看做是一對多的一種特殊形式,多方 退化成一。多方退化成一只需要在 many-to-one標簽中設置 unique=true。hibernate-mappingclass name=com.suxiaolei.hibernate.pojosAdress table=adressid name=id type=integercolumn name=id/columngenerator class=increment/generatorproperty name=city column=city type=string/propertyone-to-one name=team class=com.suxiaolei.hibernate.pojos.Teamcascade=all/one-to-one/class/hibernate-mapping球隊:hibernate-mapping

溫馨提示

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

評論

0/150

提交評論