hibernate 关联总结
? ? ? ? ? ? ?1:主外鍵:兩表關聯
<!-- 利用一對多關系加載ras屬性值 -->
<set name="ras">
<!--指定關聯外鍵字段,
將來拿外鍵與當前主鍵對等-->
<key column="user_id"/>
<one-to-many class="ReceiveAddress"/>
</set>
<!-- 利用多對一關聯加載相關user信息 -->
<!--?
<property name="userId" type="integer">
<column name="user_id"></column>
</property>
-->變為
? ? ? <many-to-one name="user"?
class="User" column="user_id">
</many-to-one>
? ? ? ? ? ?2:多對多:d_category_product為中間表
? ? ? ? ? ? <!-- 利用多對多關系加載pros集合 -->
? ? ? ? <set name="pros" order-by="id"
? ? ? ? table="d_category_product">
? ? ? ? <key column="cat_id"></key>
? ? ? ? <many-to-many column="product_id"
? ? ? ? class="com.tarena.pojo.Product">
? ? ? ? </many-to-many>
? ? ? ? </set>
? ? ? ? ? <!-- 利用多對多加載cats集合 -->
? ? ? ? <set name="cats"?
? ? ? ? table="d_category_product">
? ? ? ? <key column="product_id"></key>
? ? ? ? <many-to-many column="cat_id"?
? ? ? ? class="com.tarena.pojo.Category">
? ? ? ? </many-to-many>
? ? ? ? </set>
? ? ? ? ? ? 3.繼承關系映射
? ? ? ? ? ? ? *1)父類和子類都有對應的表,使用<joined-subclass>定義繼承關系,使用步驟如下
? ? ? ? ? a.將父表和子表生成單表的基本映射
? ? ? ? ? b.將子類添加extends父類
? ? ? ? ? c.利用<joined-subclass>定義子類映射
? ? ? ? ? ? ? ? 從Hibernate3.0版本開始,可以將<joined-subclass>單獨取出,放到一個hbm.xml中定義.格式如下
? ? ? ? ? <hibernate-mapping>
? ? ? ? ? ? <joined-subclass name="子類類型"?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?extends="父類類型"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?table="子類表">
? ? ? ? ? ? ? <key column="子類表關聯字段"/>
? ? ? ? ? ? ? //property字段映射
? ? ? ? ? ?</joined-subclass>
? ? ? ? ?</hibernate-mapping>
? ? ? ? ? Hibernate3.0版本之前,需要下面格式
? ? ? ? ?<hibernate-mapping>
? ? ? ? ? ?<class name="父類類型" table="父類表">
? ? ? ?//id主鍵映射
? ? ? ? ? ? ? ?//父類property映射
? ? ? ? ? ? ?<joined-subclass name="子類類型"?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?extends="父類類型"
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?table="子類表">
? ? ? ? ? ? ? <key column="子類表關聯字段"/>
? ? ? ? ? ? ? //property字段映射
? ? ? ? ? ? </joined-subclass>
? ? ? ? ? </class>
? ? ? ? ?</hibernate-mapping>
? ? ? ? ? ? ? *2)父類和子類使用同一張數據表
? ? ? ? ? ? ? 選擇題:
? ? ? ? ? ? ? 編號,題目,難度,選項,選擇答案
? ? ? ? ? ? ?簡答題:
? ? ? ? ? ? ?編號,題目,難度,簡答答案
? ? ? ? ? ? ?數據表Question
? ? ? ? ? ? ?編號,題目,難度,選項,選擇答案,簡答答案,題目類型
? ? ? ? ? ? ? ?使用<subclass>定義子類映射,具體步驟:
? ? ? ? ?a.修改實體類,定義成父類和子類的結構
? ? ? ? ?b.在映射文件中定義映射
? ? ? ? ?<hibernate-mapping>
? ? ? ? ? ?<class name="父類型" table="數據表">
? ? ? ? ? ? ? ?//定義父類中屬性的映射
? ? ? ? ? ?<discriminator column="區分字段"/>
? ? ? ? ? ?<subclass name="子類1"?
? ? ? ? ? ? ? ? ? ?discriminator-value="區分值">
? ? ? ? ? ? ? ? //定義子類1中屬性的映射
? ? ? ? ? ?</subclass>
? ? ? ? ? ?<subclass name="子類2"?
? ? ? ? ? ? ? ? ? ?discriminator-value="區分值">
? ? ? ? ? ? ? ? //定義子類2中屬性的映射
? ? ? ? ? ?</subclass>
? ? ? ? ? ?</class>
? ? ? ? <hibernate-mapping>
? ? ? ? ? ?4.其他映射
? ? ? ? ? ? ?*1).組件映射
? ? ? ? ? ? ? 目的:代碼重復利用組件,減少冗余性.
? ? ? <class>
? ? ? ? ? ? ? ? //...主鍵和屬性映射
? ? ? ?<component name="組件屬性名" class="組件類型">
? ? ? ? ? ? ? ?//組件子屬性的映射property
? ? ? ?</component>
? ? ? </class>
? ? ? ? ? ? *2).聯合主鍵映射
? ? ? ? ? ? ?目的:兩個或兩個以上字段充當主鍵
? ? ?<class>
? ? ? <composite-id id="主屬性名" class="類型">
? ? ? ? <key-property name="子屬性1" type=""?
? ? ? ? ? ? ? ? ?column="主鍵字段1">
? ? ? ? </key-property>
? ? ? ? <key-property name="子屬性2" type=""?
? ? ? ? ? ? ? ? ?column="主鍵字段2">
? ? ? ? </key-property>
? ? ? </composite-id>
? ? ? ? ? ? ? ?//其他普通屬性和字段映射
? ? </class>
?
轉載于:https://blog.51cto.com/pinus/1097773
總結
以上是生活随笔為你收集整理的hibernate 关联总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设置apache目录认证
- 下一篇: javascript 重写alert、c