Hibernate的七種映射關系之七種關聯映射(二)


  繼續上篇博客

  七、Hibernate雙向一對多關聯映射:讓多的一端來維護關系。

  主要是解決一對多單向關聯的缺陷,而不是需求驅動的。

  

  1、在Student.java實體類里添加Classes引用。private Classes classes;

  2、Student.hbm.xml里添加many-to-one標簽:<many-to-one name="classes" column="classesid"/>.Classes.hbm.xml在例子(六)里的那個的基礎上加入反轉屬性inverse(以后將維護關系的工作交給了student)。

  

<set name="students" inverse="true">
    <key column="classesid"></key>
    <one-to-many class="com.juyahong.hibernate.Student"/>
</set>

 

  注1:先保存classes,再保存student。

  注2:一對多雙向關聯的映射方式:

  • 在一的一端的集合上采用key標簽,可以使得多的一端加入一個外鍵。
  • 在多的一端采用many-to-one標簽

  注3:key標簽和many-to-one標簽加入的字段保持一致,否則會產生數據混亂。

  注4:一對多關聯映射通常在多的一端維護關系,讓一的一端失效:

    ------inverse反轉屬性的使用:可以用在一對多和多對多雙向關聯上,inverse屬性默認為false,即表示在本端可以維護關系,如果inverse為true,即表示本端不維護關系,要交給另一端來維護關系,本端失效。它是控制方向上的反轉,只影響存儲。

    ------cascade是操作上的連鎖反應(暫時了解)。

  八、Hibernate單向多對多關聯映射:

  比如學生和課程之間的關系,用戶和角色之間的關系都是多對多關系。

  

  

  

  1、User.java和Role.java實體類里都有兩個普通屬性id和name,在User.java里添加屬性,private Set roles;

  2、修改User.hbm.xml映射文件:映射集合:

  

<set name="roles" table="t_user_role">
    <key column="user_id"/>
        <many-to-many class="com.juyahong.hibernate.Role" column="role_id"/>
    </key>
</set>

 

  

  九、Hibernate雙向多對多關聯映射:

  1、Role.java里加入新集合private Set users;

  2、在例子八的基礎上,修改Role.hbm.xml文件

  

<set name="users" table="t_user_role">
    <key column="role_id"/>
        <many-to-many class="com.juyahong.hibernate.User" column="user_id"/>
    </key>
</set>

  以上介紹了Hibernate中的七種映射關系(還包括映射主鍵和外鍵兩種),在學習這一塊的時候主要是能看懂UML圖,在這些前提下,修改兩個文件,一個模型類,還有一個映射文件。本文主要簡單的提到了需要注意修改的地方和一些注意的知識點,和一些理解的東西,我覺得懂得這些足以提綱挈領,足以入門,就沒有必要全部把代碼貼上來了。

  通過學習Hibernate,讓我又提起了知識網上的舊知識點,打上了結點。又學習了通過對象模型來實現對數據庫的操作,進一步的了解了面向對象的精神所在,跟當初學習設計模式一樣,一切的一切都是在對象的基礎上,實現簡單方便快捷又可易維護的方法,受益匪淺,期待進一步的了解和探索。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM