国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hibernate4.x之映射關系--一對一映射

2019-11-14 22:04:10
字體:
來源:轉載
供稿:網友
Hibernate4.x之映射關系--一對一映射

Hibernate的1-1映射關系主要分為兩類: 

1.Hibernate基于外鍵映射的1對1關聯關系  對于基于外鍵的1-1關聯,其外鍵可以存放在任意一邊,在需要存放外鍵一端,增加many-to-one元素。為many-to-one元素增加unique="true"屬性表示為1-1關聯

1 <many-to-one name="mgr" class="com.yl.hibernate.one2one.foreign.Manager" column="MGR_ID" unique="true"></many-to-one>

  另一端需要使用one-to-one元素,該元素使用PRoperty-ref屬性指定使用被關聯實體主鍵以外的字段作為關聯字段

1 <one-to-one name="dept" class="com.yl.hibernate.one2one.foreign.Department" property-ref="mgr"></one-to-one>

  --如果不使用property-ref屬性,SQL如下:  

1 from2     MANAGERS manager0_ 3 left outer join4     DEPARTMENTS department1_ 5 on manager0_.MGR_ID=department1_.DEPT_ID

--如果使用property-ref屬性,SQL如下:

1 from2     MANAGERS manager0_ 3 left outer join4     DEPARTMENTS department1_ 5 on manager0_.MGR_ID=department1_.MGR_ID

------------------------------------代碼------------------------------------------------------------------

Department.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 2014-11-29 20:05:53 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping> 6     <class name="com.yl.hibernate.one2one.foreign.Department" table="DEPARTMENTS"> 7         <id name="deptId" type="java.lang.Integer"> 8             <column name="DEPT_ID" /> 9             <generator class="native" />10         </id>11         <property name="deptName" type="java.lang.String">12             <column name="DEPT_NAME" />13         </property>14         15         <!-- 使用many-to-one 的方式來映射1-1關聯關系 -->16         <many-to-one name="mgr" class="com.yl.hibernate.one2one.foreign.Manager" column="MGR_ID" unique="true"></many-to-one>17         18     </class>19 </hibernate-mapping>

Manager.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 2014-11-29 20:05:53 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping> 6     <class name="com.yl.hibernate.one2one.foreign.Manager" table="MANAGERS"> 7         <id name="mgrId" type="java.lang.Integer"> 8             <column name="MGR_ID" /> 9             <generator class="native" />10         </id>11         <property name="mgrName" type="java.lang.String">12             <column name="MGR_NAME" />13         </property>14         15         <!-- 映射1-1的關聯關系:在對應的數據表中已經有外鍵了,當前持久化類使用one-to-one 進行映射 -->16         <!-- 沒有外鍵的一端需要使用one-to-one元素,該元素使用property-ref 屬性指定使用被關聯實體主鍵以外的字段作為關聯字段 -->17         <one-to-one name="dept" class="com.yl.hibernate.one2one.foreign.Department" property-ref="mgr"></one-to-one>18         19         20         21     </class>22 </hibernate-mapping>

2.Hibernate基于主鍵映射的1對1關聯關系  基于主鍵的映射策略:指一端的主鍵生成器使用foreign策略,表明根據“”對方“的主鍵來生成自己的主鍵,自己并不能獨立生成主鍵。<param>子元素指定使用當前持久化類的哪個屬性作為"對方"

1 <id name="deptId" type="java.lang.Integer">2     <column name="DEPT_ID" />3     <!-- 使用外鍵的方式來生成當前的主鍵 -->4     <generator class="foreign">5         <!-- property屬性指定使用當前持久化類的哪一個屬性的主鍵作為外鍵 -->6         <param name="property">mgr</param>7     </generator>8 </id>

  采用foreign主鍵生成器策略的一端增加one-to-one元素映射關聯屬性,其one-to-one屬性還應增加constrained="true"屬性;另一端增加one-to-one元素映射關聯屬性  constrained(約束):指定為當前持久化類對應的數據庫表的主鍵添加一個外鍵約束,引用被關聯的對象("對方")所對應的數據庫表主鍵

------------------------------------代碼------------------------------------------------------------------

Department.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 2014-11-29 20:05:53 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping> 6     <class name="com.yl.hibernate.one2one.primary.Department" table="DEPARTMENTS"> 7         <id name="deptId" type="java.lang.Integer"> 8             <column name="DEPT_ID" /> 9             <!-- 使用外鍵的方式來生成當前的主鍵 -->10             <generator class="foreign">11                 <!-- property屬性指定使用當前持久化類的哪一個屬性的主鍵作為外鍵 -->12                 <param name="property">mgr</param>13             </generator>14         </id>15         <property name="deptName" type="java.lang.String">16             <column name="DEPT_NAME" />17         </property>18         19         <one-to-one name="mgr" class="com.yl.hibernate.one2one.primary.Manager" constrained="true"></one-to-one>20     </class>21 </hibernate-mapping>

Manager.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 2014-11-29 20:05:53 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping package="com.yl.hibernate.one2one.primary"> 6     <class name="Manager" table="MANAGERS"> 7         <id name="mgrId" type="java.lang.Integer"> 8             <column name="MGR_ID" /> 9             <generator class="native" />10         </id>11         <property name="mgrName" type="java.lang.String">12             <column name="MGR_NAME" />13         </property>14         15         <!-- 16             采用foreign主鍵生成器策略的一端增加one-to-one元素映射關聯屬性,17             其one-to-one節點還應增加constrained="true"屬性;以使當前的主鍵上添加外鍵約束18          -->19         <one-to-one name="dept" class="Department" property-ref="mgr"></one-to-one>20         21         22         23     </class>24 </hibernate-mapping>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金沙县| 宾川县| 温州市| 嘉黎县| 应用必备| 海淀区| 宜昌市| 商河县| 芮城县| 景洪市| 孟津县| 隆尧县| 五峰| 泰安市| 改则县| 海丰县| 唐海县| 商水县| 九龙坡区| 文登市| 鲁甸县| 罗田县| 南部县| 蓬安县| 房产| 丰城市| 万安县| 台东市| 湾仔区| 敖汉旗| 宁国市| 秦皇岛市| 赤峰市| 改则县| 牟定县| 德庆县| 黔江区| 开平市| 九龙城区| 萨迦县| 宜昌市|