Hibernate一對多單向關聯和雙向關聯映射方法及其優缺點 (待續)

來源:互聯網
上載者:User

標籤:

一對多關聯映射和多對一關聯映射實現的基本原理都是一樣的,既是在多的一端加入一個外鍵指向一的一端外鍵,而主要的區別就是維護端不同。
它們的區別在於維護的關係不同:

一對多關聯映射是指在載入一的一端資料的同時載入多的一端的資料

多對一關聯映射是指在載入多的一端資料的同時載入一的一端的資料


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

必須先儲存多的一端後才可以儲存一的一端,所以在儲存多的一端時多的一端不知道一的一端是否存在相應的資料,所以只能將維護的關係欄位設定為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>


除了文章中有特別說明,均為IT宅原創文章,轉載請以連結形式註明出處。
本文連結:http://www.itzhai.com/hibernate-one-to-many-unidirectional-and-bidirectional-association-mapping-method-and-its-advantages-and-disadvantages.html
關鍵字: Hibernate, one-to-many

後續資料參考:http://blog.csdn.net/liangoo7/article/details/8070166

Hibernate一對多單向關聯和雙向關聯映射方法及其優缺點 (待續)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.