hibernate關(guān)系映射注解配置_第1頁(yè)
hibernate關(guān)系映射注解配置_第2頁(yè)
hibernate關(guān)系映射注解配置_第3頁(yè)
hibernate關(guān)系映射注解配置_第4頁(yè)
hibernate關(guān)系映射注解配置_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

本文格式為Word版,下載可任意編輯——hibernate關(guān)系映射注解配置

關(guān)于hibernate的關(guān)系映射配置總結(jié),要是有錯(cuò)誤的地方歡迎大家指正。

1.HibernateAnnotation關(guān)系映射有下面幾種類型:

1)一對(duì)一外鍵關(guān)聯(lián)映射(單向)

2)一對(duì)一外鍵關(guān)聯(lián)映射(雙向)

3)一對(duì)一主鍵關(guān)聯(lián)映射(不重要,有需要看下文檔即可)

在實(shí)際中很少用,使用注解@PrimaryKeyJoinColumn

意思是說,我的主鍵去參考另外一張表中的主鍵,作為我的主鍵,但是在我測(cè)試使用

注解一對(duì)一主鍵關(guān)聯(lián)映射,在生成表的時(shí)候,數(shù)據(jù)庫(kù)中并沒有生成關(guān)聯(lián),使用XML

映射可以生成。Annotation注解一對(duì)一主鍵關(guān)聯(lián)映,有些bug。不過沒空去研究它。

由于在實(shí)際開發(fā)中一對(duì)一很少用。在實(shí)際開發(fā)中我機(jī)遇沒有用過,主鍵關(guān)聯(lián)就更少了

4)多對(duì)一關(guān)聯(lián)映射(單向)

5)一對(duì)多關(guān)聯(lián)映射(單向)

6)一對(duì)多關(guān)聯(lián)映射(雙向)

7)多對(duì)多關(guān)聯(lián)映射(單向)

8)多對(duì)多關(guān)聯(lián)映射(雙向)

2.介紹各種映射用法

1)一對(duì)一外鍵關(guān)聯(lián)映射(單向)HusbandWife

publicclassHusband{

privateWifewife;

@OneToOne(cascade=CascadeType.ALL)

@JoinColumn(name=wife_id,unique=true)

publicWifegetWife(){…}

}

publicclassWife{

}

一對(duì)一外鍵關(guān)聯(lián),使用@OneToOne,并設(shè)置了級(jí)聯(lián)操作

@JoinColum設(shè)置了外鍵的名稱為wife_id(數(shù)據(jù)庫(kù)字段名),假使不設(shè)置,則默認(rèn)為另一類的屬性名+_id

外鍵的值是唯一的(unique),不可重復(fù),與另一類的主鍵一致

2)一對(duì)一外鍵關(guān)聯(lián)映射(雙向)HusbandWife

publicclassHusband{

privateWifewife;

@OneToOne(cascade=CascadeType.ALL)

@JoinColumn(name=wife_id,unique=true)

publicWifegetWife(){…}

...

}

publicclassWife{

privateHusbandhusband;

@OneToOne(mappedBy=wife,cascade=CascadeType.ALL)

publicHusbandgetHusband(){…}

...

}

一對(duì)一雙向關(guān)聯(lián)關(guān)系,使用@OneToOne

注意:需要加上mappedBy=wife,假使不加上的話,Wife也會(huì)生成一個(gè)外鍵(husband_id)。mappedby=wife需要指向與他關(guān)聯(lián)對(duì)象的一個(gè)屬性(即Husband類里面的wife屬性),這里的會(huì)在Husband表里面生成個(gè)外鍵wife_id字段,而Wife表里則不會(huì)生成。這里Husband作為維護(hù)端即主

關(guān)于hibernate的關(guān)系映射配置總結(jié),要是有錯(cuò)誤的地方歡迎大家指正。

體端,Wife作為被維護(hù)端。

說明雙向關(guān)聯(lián)關(guān)系中,有且僅有一端是作為主體(owner)端存在的

規(guī)律:只要是雙向關(guān)聯(lián)關(guān)系,都加上mappedby

cascade=CascadeType.ALL級(jí)聯(lián)

4)多對(duì)一關(guān)聯(lián)映射(單向)StudentsGroup

publicclassStudents{

privateGroupgroup;

@ManyToOne(targetEntity=Group.class)

@JoinColumn(name=group_id)

publicGroupgetGroup(){…}

}

publicclassGroup{

}

多對(duì)一注解@ManyToOne

targetEntity指定了關(guān)聯(lián)對(duì)象

@JoinColumn(name=Group_id)指定生產(chǎn)的外鍵的字段名,默認(rèn)是Group_id

5)一對(duì)多關(guān)聯(lián)映射(單向)GroupStudents

publicclassGroup{

privateSetStudentsstudents=newHashSetStudents(0);

@OneToMany

@JoinColumn(name=group_id)

publicSetStudentsgetStudents(){…}

}

publicclassStudents{

}

一對(duì)多注解@OneToMany(單向)

假使只寫@OneToMany的話,hibernate會(huì)建一張中間表來(lái)

維護(hù)他們之間的關(guān)系,

加上@JoinColumn(name=Group_id),則不會(huì)建中間表,他會(huì)在

多的一端加上外鍵Group_id,來(lái)維護(hù)他們之間的關(guān)系

6)一對(duì)多關(guān)聯(lián)映射(雙向)GroupStudents

publicclassGroup{

privateSetStudentsstudents=newHashSetStudents(0);

@OneToMany(mappedBy=group)

@JoinColumn(name=group_id)

publicSetStudentsgetStudents(){…}

}

publicclassStudents{

privateGroupgroup;

@ManyToOne

@JoinColumn(name=group_id)

publicGroupgetGroup(){…}

關(guān)于hibernate的關(guān)系映射配置總結(jié),要是有錯(cuò)誤的地方歡迎大家指正。

}

一端:

@OneToMany(mappedBy=group)

@JoinColumn(name=group_id)

一對(duì)多雙向,在一的一端中設(shè)置mappedBy

說明多的一端為主導(dǎo)

假使指定了外鍵字段名稱,則多的一端也需要指定一致的字段名稱

多端:

@ManyToOne

@JoinColumn(name=group_id)

一對(duì)多雙向

需要指定外鍵與一的一端給的外鍵名稱一致,@JoinColumn(name=group_id)

也可以不指定,假使在多的一端不指定,則一的一端也不能指定

否則為生成兩個(gè)外鍵

7)多對(duì)多關(guān)聯(lián)映射(單向)TeachersStudents

publicclassTeachers{

privateSetStudentsstudents=newHashSetStudents(0);

@ManyToMany

@JoinTable(name=Teacher_Students,

joinColumns={@JoinColumn(name=students_id)},

inverseJoinColumns={@JoinColumn(name=teachers_id)}

)

publicSetStudentsgetStudents(){…}

}

publicclassStudents{

}

@ManyToMany

多對(duì)多映射:注解@ManyToMany(單向)

默認(rèn)狀況下,hibernate會(huì)自動(dòng)的創(chuàng)立一張中間表,

來(lái)維護(hù)多對(duì)多關(guān)系

默認(rèn)中間表的名稱:Teacher_Students中間表,字段的名稱teachers_id,students_id假使想更換表名和字段名稱,注解如下:

@ManyToMany

@JoinTable(name=Teacher_Students,

joinColumns={@JoinColumn(name=students_id)},

inverseJoinColumns={@JoinColumn(name=teachers_id)}

)

@JoinTable(name=Teacher_Students,

指定中間表的表名

關(guān)于hibernate的關(guān)系映射配置總結(jié),要是有錯(cuò)誤的地方歡迎大家指正。

joinColumns={@JoinColumn(name=students_id)},

指定當(dāng)前對(duì)象的外鍵

inverseJoinColumns={@JoinColumn(name=teachers_id)}

指定關(guān)聯(lián)對(duì)象的外鍵

8)多對(duì)多關(guān)聯(lián)映射(雙向)TeachersStudents

publicclassTeachers{

privateSetStudentsstudents=newHashSetStudents(0);

@ManyToMany

@JoinTable(name=Teacher_Students,

joinColumns={@JoinColumn(name=teachers_id)},

inverseJoinColumns={@JoinColumn(name=students_id)}

)

publicSetStudentsgetStudents(){…}

}

publicclassStudents{

privateSetTeachersteachers=newHashSetTeachers(0);

@Man

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論