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

下載本文檔

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

文檔簡(jiǎn)介

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

2、)6)對(duì)多關(guān)聯(lián)映射(雙向)7)多對(duì)多關(guān)聯(lián)映射(單向)8)多對(duì)多關(guān)聯(lián)映射(雙向)介紹各種映射用法1)一對(duì)一外鍵關(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一對(duì)一外鍵關(guān)聯(lián),使用OneToOne,并設(shè)置了級(jí)聯(lián)操作JoinColum設(shè)置了外鍵的名稱(chēng)為wife_id (數(shù)據(jù)庫(kù)字段名),如果不設(shè)置,則默認(rèn)為另一類(lèi)的屬性名 +

3、 _id外鍵的值是唯一的(unique),不可重復(fù),與另一類(lèi)的主鍵一致2)一對(duì)一外鍵關(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().一對(duì)一雙向關(guān)聯(lián)關(guān)系,使用OneToOne注意:需要加上mappedBy=wife,如果不加上的話,Wife也會(huì)生成一個(gè)外鍵(husband_id)。mappedby=wife需要指向與他關(guān)聯(lián)對(duì)象的一個(gè)屬性(即Husband類(lèi)里面的wife屬性),這里的會(huì)在Husband表里面生成個(gè)外鍵wife_id字段,而Wife表里則不會(huì)生成。這里Husband作為維護(hù)端即主 體端,Wife作為被維護(hù)端。說(shuō)明雙向關(guān)聯(lián)關(guān)系中,有且僅有一端是作為主體(owner)端存在的規(guī)律:只要是雙向關(guān)聯(lián)關(guān)系,都加上mappedbycascade=CascadeType.ALL 級(jí)聯(lián)多對(duì)一關(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多對(duì)一注解ManyToOnetargetEntity指定了關(guān)聯(lián)對(duì)象JoinColumn(name=Group_id)指定生產(chǎn)的外鍵的字段名,默認(rèn)是Group_id一對(duì)多關(guān)聯(lián)映射(單向)Group Studentspublic class Groupprivate Set students

6、= new HashSet(0);OneToManyJoinColumn(name=group_id)public Set getStudents() public class Students一對(duì)多注解OneToMany (單向)如果只寫(xiě)OneToMany的話,hibernate會(huì)建一張中間表來(lái)維護(hù)他們之間的關(guān)系,加上JoinColumn(name=Group_id),則不會(huì)建中間表,他會(huì)在多的一端加上外鍵Group_id,來(lái)維護(hù)他們之間的關(guān)系一對(duì)多關(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) 一對(duì)多雙向,在一的一端中設(shè)置mappedBy 說(shuō)明多的一端為主導(dǎo) 如果指定了外鍵字段名稱(chēng),則多的一端也需要指定相同的字段名稱(chēng)多端:M

8、anyToOneJoinColumn(name=group_id)一對(duì)多雙向需要指定外鍵與一的一端給的外鍵名稱(chēng)一致,JoinColumn(name=group_id) 也可以不指定,如果在多的一端不指定,則一的一端也不能指定 否則為生成兩個(gè)外鍵多對(duì)多關(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多對(duì)多映射:注解ManyToMany (單向)默認(rèn)情況下,hibernate會(huì)自動(dòng)的創(chuàng)建一張中間表,來(lái)維護(hù)多對(duì)多關(guān)系默認(rèn)中間表的名稱(chēng):Teacher_Students中間表,字段的名稱(chēng)teachers_id , students_id 如果想更換表名和字段名稱(chēng),注解如下: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)前對(duì)象的外鍵inverseJoinColumns=JoinColumn(name=teachers_id ) 指定關(guān)聯(lián)對(duì)象的外鍵多對(duì)多關(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論