hibernate關(guān)系映射注解配置_第1頁
hibernate關(guān)系映射注解配置_第2頁
hibernate關(guān)系映射注解配置_第3頁
hibernate關(guān)系映射注解配置_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Hibernate Annotation關(guān)系映射有下面幾種類型:1)一對一外鍵關(guān)聯(lián)映射(單向)2)對一外鍵關(guān)聯(lián)映射(雙向)3)一對一主鍵關(guān)聯(lián)映射(不重要,有需要看下文檔即可)在實際中很少用,使用注解PrimaryKeyJoinColumn意思是說,我的主鍵去參考另外一張表中的主鍵,作為我的主鍵,但是在我測試使用 注解一對一主鍵關(guān)聯(lián)映射,在生成表的時候,數(shù)據(jù)庫中并沒有生成關(guān)聯(lián),使用XML 映射可以生成。Annotation注解一對一主鍵關(guān)聯(lián)映,有些bug。不過沒空去研究它。 因為在實際開發(fā)中一對一很少用。在實際開發(fā)中我機會沒有用過,主鍵關(guān)聯(lián)就更少了4)多對一關(guān)聯(lián)映射(單向)5)對多關(guān)聯(lián)映射(單向

2、)6)對多關(guān)聯(lián)映射(雙向)7)多對多關(guān)聯(lián)映射(單向)8)多對多關(guān)聯(lián)映射(雙向)介紹各種映射用法1)一對一外鍵關(guān)聯(lián)映射(單向)Husband Wifepublic class Husbandprivate Wife wife;OneToOne(cascade二CascadeType.ALL)JoinColumn(name=wife_id,unique二true)public Wife getWife()public class Wife一對一外鍵關(guān)聯(lián),使用OneToOne,并設(shè)置了級聯(lián)操作JoinColum設(shè)置了外鍵的名稱為wife_id (數(shù)據(jù)庫字段名),如果不設(shè)置,則默認為另一類的屬性名 +

3、 _id外鍵的值是唯一的(unique),不可重復(fù),與另一類的主鍵一致2)一對一外鍵關(guān)聯(lián)映射(雙向)Husband Wifepublic class Husbandprivate Wife wife;OneToOne(cascade二CascadeType.ALL)JoinColumn(name=wife_id,unique二true)public Wife getWife().public class Wifeprivate Husband husband;OneToOne(mappedBy=wife,cascade二CascadeType.ALL)public Husband getHus

4、band().一對一雙向關(guān)聯(lián)關(guān)系,使用OneToOne注意:需要加上mappedBy=wife,如果不加上的話,Wife也會生成一個外鍵(husband_id)。mappedby=wife需要指向與他關(guān)聯(lián)對象的一個屬性(即Husband類里面的wife屬性),這里的會在Husband表里面生成個外鍵wife_id字段,而Wife表里則不會生成。這里Husband作為維護端即主 體端,Wife作為被維護端。說明雙向關(guān)聯(lián)關(guān)系中,有且僅有一端是作為主體(owner)端存在的規(guī)律:只要是雙向關(guān)聯(lián)關(guān)系,都加上mappedbycascade=CascadeType.ALL 級聯(lián)多對一關(guān)聯(lián)映射(單向)Stu

5、dents Grouppublic class Students private Group group;ManyToOne(targetEntity= Group.class)JoinColumn(name=group_id)public Group getGroup()public class Group多對一注解ManyToOnetargetEntity指定了關(guān)聯(lián)對象JoinColumn(name=Group_id)指定生產(chǎn)的外鍵的字段名,默認是Group_id一對多關(guān)聯(lián)映射(單向)Group Studentspublic class Groupprivate Set students

6、= new HashSet(0);OneToManyJoinColumn(name=group_id)public Set getStudents() public class Students一對多注解OneToMany (單向)如果只寫OneToMany的話,hibernate會建一張中間表來維護他們之間的關(guān)系,加上JoinColumn(name=Group_id),則不會建中間表,他會在多的一端加上外鍵Group_id,來維護他們之間的關(guān)系一對多關(guān)聯(lián)映射(雙向)Group Studentspublic class Groupprivate Set students = new HashS

7、et(0);OneToMany(mappedBy=group)JoinColumn(name=group_id)public Set getStudents() public class Studentsprivate Group group;ManyToOneJoinColumn(name=group_id)public Group getGroup()一端:OneToMany(mappedBy=group) JoinColumn(name=group_id) 一對多雙向,在一的一端中設(shè)置mappedBy 說明多的一端為主導(dǎo) 如果指定了外鍵字段名稱,則多的一端也需要指定相同的字段名稱多端:M

8、anyToOneJoinColumn(name=group_id)一對多雙向需要指定外鍵與一的一端給的外鍵名稱一致,JoinColumn(name=group_id) 也可以不指定,如果在多的一端不指定,則一的一端也不能指定 否則為生成兩個外鍵多對多關(guān)聯(lián)映射(單向)Teachers Studentspublic class Teachersprivate Set students = new HashSet(0);ManyToManyJoinTable(name=Teacher_Students, joinColumns=JoinColumn(name= students_id), inver

9、seJoinColumns=JoinColumn(name=teachers_id ) )public Set getStudents() public class StudentsManyToMany多對多映射:注解ManyToMany (單向)默認情況下,hibernate會自動的創(chuàng)建一張中間表,來維護多對多關(guān)系默認中間表的名稱:Teacher_Students中間表,字段的名稱teachers_id , students_id 如果想更換表名和字段名稱,注解如下:ManyToManyJoinTable(name=Teacher_Students,joinColumns=JoinColum

10、n(name= students_id), inverseJoinColumns=JoinColumn(name=teachers_id ) )JoinTable(name=Teacher_Students, 指定中間表的表名joinColumns=JoinColumn(name=students_id),指定當(dāng)前對象的外鍵inverseJoinColumns=JoinColumn(name=teachers_id ) 指定關(guān)聯(lián)對象的外鍵多對多關(guān)聯(lián)映射(雙向)Teachers Studentspublic class Teachersprivate Set students = new HashSet(0);ManyToManyJoinTable(name=Teacher_Students,joinColumns=JoinColumn(name=teachers_id), inverseJoinColumns =JoinColumn(name=students_id) )public Set getStudents() public class Studentsprivate Set teachers = new HashSet(0);ManyToMany(map

溫馨提示

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

評論

0/150

提交評論