版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 風(fēng)景名勝區(qū)自行車租借協(xié)議
- 建筑安裝工程承包合作協(xié)議
- 廣告委托制作協(xié)議書
- 民間借款協(xié)議書的格式要求
- 私車出租給機(jī)構(gòu)協(xié)議
- 2024年加盟經(jīng)銷合同范本
- 建筑工程勞務(wù)擴(kuò)大分包合同完整2024年
- 2024正規(guī)版私人借款合同樣本
- 吉林省農(nóng)業(yè)產(chǎn)品訂購(gòu)協(xié)議
- 房產(chǎn)物業(yè)抵押借款協(xié)議
- 中等職業(yè)學(xué)校學(xué)業(yè)水平考試《電工基礎(chǔ)》課程考試大綱
- 中美兩國(guó)教育中對(duì)學(xué)生數(shù)學(xué)問題解決能力培養(yǎng)的差異研究
- 4.1.2測(cè)量玻璃磚的折射課件-高二上學(xué)期物理人教版選擇性
- 保險(xiǎn)中介傭金協(xié)議書
- 全國(guó)大學(xué)生職業(yè)規(guī)劃大賽
- 膠輪車司機(jī):膠輪車司機(jī)考試試題
- 家庭教育指導(dǎo)說明報(bào)告
- 醫(yī)學(xué)與大數(shù)據(jù):信息技術(shù)在醫(yī)療中的應(yīng)用
- 2024年室內(nèi)裝飾設(shè)計(jì)師(高級(jí)工)考試復(fù)習(xí)題庫(kù)(含答案)
- 2024年長(zhǎng)沙衛(wèi)生職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 教育培訓(xùn)行業(yè)2024年生產(chǎn)與制度改革方案
評(píng)論
0/150
提交評(píng)論