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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Hibernate一对多单向关联和双向关联映射方法及其优缺点

發布時間:2025/6/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hibernate一对多单向关联和双向关联映射方法及其优缺点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一對多關聯映射和多對一關聯映射實現的基本原理都是一樣的,既是在多的一端加入一個外鍵指向一的一端外鍵,而主要的區別就是維護端不同。 它們的區別在于維護的關系不同:

一對多關聯映射是指在加載一的一端數據的同時加載多的一端的數據

多對一關聯映射是指在加載多的一端數據的同時加載一的一端的數據

而單向一對多關聯映射是在一的一端維護關系的,具有以下的缺點:

必須先保存多的一端后才可以保存一的一端,所以在保存多的一端時多的一端不知道一的一端是否存在相應的數據,所以只能將維護的關系字段設置為null,如果為非空則無法保存。因為是一的一端維護關系,所以在保存一的一端時,會發出多余的update語句維護多的一端的外鍵關系。

下面舉例說明配置一對多的單向關聯和雙向關聯的映射方法:

涉及到的一端和多端的類結構參考這篇文章:Hibernate一對多關聯映射的配置及其級聯刪除問題

一對多雙向關聯映射的配置(可參考上面提供的文章):

在一的一端的集合上采用<key>標簽進行映射:

<set name="quesion" inverse="true" cascade="delete"><key column="question_type_name"/><one-to-many class="Question"/> </set>

在多的一端加入一個外鍵private QuestionType questionType;?采用<many-to-one>標簽進行映射:

<many-to-one name="questionType" column="question_type_name"/>

一對多雙向關聯映射一般讓多的一端維護關系,所以需要設置inverse屬性為true,表示本段不維護關系,而交給另一端維護,既是多的一端。同時也可以使用設置cascade進行級聯操作,如上面一篇文章的級聯刪除設置:cascade=”delete”,表示刪除一的一端的同時刪除關聯的多的一端的所有數據。

一對多單向關聯映射:

一對多單向關聯映射 多的一端Question不需要加入外鍵private QuestionType questionType; 只需要在一的一端的集合上采用<key>標簽進行映射,映射代碼如下:

<set name="quesion" inverse="true" cascade="delete"><key column="question_type_name"/><one-to-many class="Question"/> </set>

總結

以上是生活随笔為你收集整理的Hibernate一对多单向关联和双向关联映射方法及其优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。

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