標簽:blog class com code img http div java size javascript style
繼續上篇博客
七、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:一對多雙向關聯的映射方式:
注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,让我又提起了知识网上的旧知识点,打上了结点。又学习了通过对象模型来实现对數據庫的操作,进一步的了解了面向对象的精神所在,跟当初学习设计模式一样,一切的一切都是在对象的基础上,实现简单方便快捷又可易维护的方法,受益匪浅,期待进一步的了解和探索。
Hibernate的七種映射關系之七種關聯映射(二),布布扣,bubuko.com
標簽:blog class com code img http div java size javascript style
原文地址:http://www.cnblogs.com/jyh317/p/3694844.html