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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

hibernate 映射四多对一双向映射

發布時間:2023/12/2 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hibernate 映射四多对一双向映射 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學生和班級的例子來說,多個學生可以對應一個班級。

1.站在學生角度來說,學生就是多端。那么我們可以通過多對一來維護2者的關系。

2.站在班級的角度來說,班級就是一端。那么我們可以通過一對多啦維護2者的關系。

3.我們也可以雙向關聯兩者的關系。(這個要牽涉到了反轉)

?

無論是多對一還是一對多,最終生成的數據庫的表中,都會在多的一端增加了一個外鍵來關聯一的一端。

?

首先先站在學生的角度上 多對一:

最終生成的數據庫:

?

下面是多對一映射中的字段意思:

?

一對多中:

?

生成的表結構和多對一 一樣。

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

但是這樣會造成一個問題,因為student中會多一個字段cid,但是保存student 的時候我們操作的是對象而不是數據庫

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


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

所以我們不建議使用一端來維護多端。所以我們這就出現了反轉,把維護的工作交給了多端來維護。保存,修改,刪除,都由多端來維護。

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

inverse="true"是雙向關聯的概念,使用了這個,再進行一端維護多段是不能關聯cid的。所以就必須用多端維護。

?

下面就是雙向關聯:

?

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

?

反向工程:

點擊finish就可以了.

?

關于fetch,以后詳細再說。

?

?

?

?

轉載于:https://www.cnblogs.com/RanNing/p/3472257.html

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。