hibernate中多表映射關系配置
阿新 • • 發佈:2017-06-06
-- 實體映射 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中多表映射關系配置