日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hibernate 映射四多对一双向映射

發(fā)布時(shí)間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate 映射四多对一双向映射 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)生和班級(jí)的例子來(lái)說(shuō),多個(gè)學(xué)生可以對(duì)應(yīng)一個(gè)班級(jí)。

1.站在學(xué)生角度來(lái)說(shuō),學(xué)生就是多端。那么我們可以通過(guò)多對(duì)一來(lái)維護(hù)2者的關(guān)系。

2.站在班級(jí)的角度來(lái)說(shuō),班級(jí)就是一端。那么我們可以通過(guò)一對(duì)多啦維護(hù)2者的關(guān)系。

3.我們也可以雙向關(guān)聯(lián)兩者的關(guān)系。(這個(gè)要牽涉到了反轉(zhuǎn))

?

無(wú)論是多對(duì)一還是一對(duì)多,最終生成的數(shù)據(jù)庫(kù)的表中,都會(huì)在多的一端增加了一個(gè)外鍵來(lái)關(guān)聯(lián)一的一端。

?

首先先站在學(xué)生的角度上 多對(duì)一:

最終生成的數(shù)據(jù)庫(kù):

?

下面是多對(duì)一映射中的字段意思:

?

一對(duì)多中:

?

生成的表結(jié)構(gòu)和多對(duì)一 一樣。

保存的時(shí)候,先保存一端,然后保存多端。也就是先保存student,然后保存clazz。

但是這樣會(huì)造成一個(gè)問(wèn)題,因?yàn)閟tudent中會(huì)多一個(gè)字段cid,但是保存student 的時(shí)候我們操作的是對(duì)象而不是數(shù)據(jù)庫(kù)

發(fā)后臺(tái)的語(yǔ)句:
?//保存student
?Hibernate: insert into Student (name, sex, age) values (?, ?, ?)? //并沒(méi)有插入cid的值,這也是為什么student的cid配置不能為null的原因。


?//保存class
?Hibernate: insert into Clazz (name) values (?)
?
?//commit的時(shí)候會(huì)發(fā)送更新語(yǔ)句。
?Hibernate: update Student set cid=? where id=?

所以我們不建議使用一端來(lái)維護(hù)多端。所以我們這就出現(xiàn)了反轉(zhuǎn),把維護(hù)的工作交給了多端來(lái)維護(hù)。保存,修改,刪除,都由多端來(lái)維護(hù)。

所以在一端我們就可以加入??<set name="student" inverse="true">

inverse="true"是雙向關(guān)聯(lián)的概念,使用了這個(gè),再進(jìn)行一端維護(hù)多段是不能關(guān)聯(lián)cid的。所以就必須用多端維護(hù)。

?

下面就是雙向關(guān)聯(lián):

?

?這樣,這樣進(jìn)行保存的時(shí)候,只能先保存一端然后再保存多端。反之操作cid將不會(huì)update,cid也就不會(huì)有值。

?

反向工程:

點(diǎn)擊finish就可以了.

?

關(guān)于fetch,以后詳細(xì)再說(shuō)。

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/RanNing/p/3472257.html

總結(jié)

以上是生活随笔為你收集整理的hibernate 映射四多对一双向映射的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。