hibernate映射-单向n-n关联关系
生活随笔
收集整理的這篇文章主要介紹了
hibernate映射-单向n-n关联关系
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
(學習記錄,錯誤不足之處,請您耐心指正^_^)
hibernate映射-多對多關聯關系
? ?n-n關聯必須使用連接表才能完成,
一、代碼示例:
{類文件↓}
Category.class
1 package com.zit.hibernate.n2n; 2 3 import java.util.HashSet; 4 import java.util.Set; 5 6 public class Category { 7 8 private Integer id; 9 private String name; 10 11 private Set<Item> items = new HashSet<>(); 12 13 public Integer getId() { 14 return id; 15 } 16 public void setId(Integer id) { 17 this.id = id; 18 } 19 public String getName() { 20 return name; 21 } 22 public void setName(String name) { 23 this.name = name; 24 } 25 public Set<Item> getItems() { 26 return items; 27 } 28 public void setItems(Set<Item> items) { 29 this.items = items; 30 } 31 32 } Category.classItem.class
?
1 package com.zit.hibernate.n2n; 2 3 public class Item { 4 5 private Integer id; 6 private String name; 7 8 public Integer getId() { 9 return id; 10 } 11 public void setId(Integer id) { 12 this.id = id; 13 } 14 public String getName() { 15 return name; 16 } 17 public void setName(String name) { 18 this.name = name; 19 } 20 21 } Item.class?
(單向n-n)
{映射文件↓}
Item.hbm.xml
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2015-12-25 13:55:35 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping package="com.zit.hibernate.n2n"> 6 <class name="Item" table="ITEMS"> 7 <id name="id" type="java.lang.Integer"> 8 <column name="ID" /> 9 <generator class="native" /> 10 </id> 11 <property name="name" type="java.lang.String"> 12 <column name="NAME" /> 13 </property> 14 </class> 15 </hibernate-mapping> Item.hbm.xmlCategory.hbm.xml
1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2015-12-25 13:55:35 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping package="com.zit.hibernate.n2n"> 6 <class name="Category" table="CATEGORIES"> 7 <id name="id" type="java.lang.Integer"> 8 <column name="ID" /> 9 <generator class="native" /> 10 </id> 11 <property name="name" type="java.lang.String"> 12 <column name="NAME" /> 13 </property> 14 <set name="items" table="CATEGORIES_ITEMS"> 15 <key> 16 <column name="C_ID" /> 17 </key> 18 <many-to-many class="Item" column="I_ID"></many-to-many> 19 </set> 20 </class> 21 </hibernate-mapping> Category.hbm.xml在Category.hbm.xml中,
1 <set name="items" table="CATEGORIES_ITEMS"> 2 <key> 3 <column name="C_ID" /> 4 </key> 5 <many-to-many class="Item" column="I_ID"></many-to-many> 6 </set>這里的table指定中間表的名字,key 子元素,指定該中間表中參照CATEGORIES表的外鍵為C_ID.
使用many-to-many時,class屬性指定items集合中存放的是Item對象,column指定中間表中參照ITEMS表的外鍵
? ?名為 ?I_ID。
(中間表未指定主鍵,那么兩個屬性聯合起來作為主鍵。)
?
二、使用注意:
1.保存記錄時,由于兩個表并沒有直接的聯系,所以,先后保存哪一個數據,并沒有直接的影響。但save記錄時,需要同時操作中間表,所以,會相應的多出insert語句。
2.查詢時,有懶加載,在查詢set<Item>的size時,會將 中間表與ITEMS表進行內連接查詢。
(學習記錄,錯誤不足之處,請您耐心指正^_^)
轉載于:https://www.cnblogs.com/zitt/p/5075710.html
總結
以上是生活随笔為你收集整理的hibernate映射-单向n-n关联关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML基础做出属于自己的完美网页
- 下一篇: WCF技术实现基于角色的访问控制