1. 程式人生 > >hibernate中多表映射關系配置

hibernate中多表映射關系配置

-- 實體映射 user roles 實體 name 聯系人 冗余 表名

1.one-to-many一對多關系的映射配置(在一的一方實體映射文件中配置)



    <!-- 
            cascade屬性:級聯操作屬性
                save-update: 級聯保存,保存客戶時,級聯保存客戶關聯的聯系人
                delete:級聯刪除,刪除客戶時,級聯刪除客戶關聯的聯系人
                all:級聯保存+級聯刪除
         -->
         <!-- 
            inverse屬性:設置是否不維護關聯關系
                true:不維護關聯
                false(默認值):維護關聯
         
--> <!-- 一對多 --> <set name="linkMen" inverse="true" > <!-- 外鍵列名 --> <key column="lkm_cust_id" ></key> <!-- 該集合是一對多關系表達,關聯的對象時linkman --> <one-to-many class="LinkMan" /> </set>

  一對多|多對一關系中,放置sql語句冗余.一般選擇一的一方放棄維護,inverse屬性設置為true.

2.many-to-one 多對一關系映射配置(在多的一方實體映射文件中配置)

            <!-- 
            cascade屬性:級聯操作屬性
                save-update: 級聯保存,保存客戶時,級聯保存客戶關聯的聯系人
                delete:級聯刪除,刪除客戶時,級聯刪除客戶關聯的聯系人
                all:級聯保存+級聯刪除
         -->
         <!-- 
             沒有inverse屬性:
                 外鍵列所在實體,無法放棄維護關聯關系.
          
--> <!-- 多對一 --> <many-to-one name="customer" column="lkm_cust_id" class="Customer" ></many-to-one>

3.many-to-many多對多關系映射配置

                <!-- 多對多關系配置 
                table:中間表表名
        -->
         <!-- 
            inverse屬性:設置是否不維護關聯關系
                true:不維護關聯
                false(默認值):維護關聯
         -->
         <!-- 
            cascade屬性:級聯操作屬性
                save-update: 級聯保存,保存客戶時,級聯保存客戶關聯的聯系人
                delete:級聯刪除,刪除客戶時,級聯刪除客戶關聯的聯系人
                all: 級聯保存+級聯刪除
         -->
        <set name="roles" table="sys_user_role"   >
            <!-- 別人引用"我"的外鍵列名 -->
            <key column="user_id" ></key>
            <!-- 表達集合是多對多關系
                class屬性:表達我與誰是多對多
                column屬性:表達另外一個外鍵列名
             -->
            <many-to-many class="Role" column="role_id" ></many-to-many>
        </set>

多對多關系中,選擇一方發起維護關系,放置中間表數據錄入重復,根據業務邏輯決定,如商品和訂單是多對多關系,訂單維護商品放棄維護

hibernate中多表映射關系配置