目的:表操作(表維護) 一、一對一(略過) 二、一對 1、建表原則:在多的一方創建外鍵指向一的一方的外鍵 2、建表:實體中添加 3、操作 1、參數: name屬性:集合屬性名 column屬性: 外鍵列名 class屬性: 與我關聯的對象完整類名 2、級聯操作: cascade save-updat ...
目的:表操作(表維護)
一、一對一(略過)
二、一對 1、建表原則:在多的一方創建外鍵指向一的一方的外鍵
2、建表:實體中添加
商品實體表: private Set<User> user = new Hashset<User>(); 用戶實體表: private Shangping shangping; 對應的表映射關係:
User.hbm.xml:
<set name="User"> <key column="user_cust_id"></key> <one-to-many class="對象全類名"> </set>'
Shangping.hbm.xml:
<many-to-one name="shangping" class="對象全類名" column="user_cust_id" >
以及hibernate.cfg.xml中添加:映射配置文件
<mapping resource="配置文件路經" />
3、操作
1、參數:
name屬性:集合屬性名
column屬性: 外鍵列名
class屬性: 與我關聯的對象完整類名
2、級聯操作: cascade
save-update: 級聯保存更新(推薦使用)
delete:級聯刪除(不推薦啊)
all:save-update+delete
級聯操作: 簡化操作.目的就是為了少些兩行代碼.
3、索引維護
inverse屬性: 配置關係是否維護.
true: customer不維護關係
false(預設值): customer維護關係
inverse屬性: 性能優化.提高關係維護的性能.
原則: 無論怎麼放棄,總有一方必須要維護關係.
一對多關係中: 一的一方放棄.也只能一的一方放棄.多的一方不能放棄.
<set name="User" inverse="true" cascade="delete" >
<key column="user_cust_id" ></key>
<one-to-many class="User" />
</set>
三、多對多
1、建表原則:創建中間表,中間表中至少兩個欄位作為外鍵分別指向多對多雙方的主鍵(既:類似於一對多)
2、實體
User.java
private Set<User> users = new HashSet<User>();
Role.java
private Set<Role> roles = new HashSet<Role>();
3、表操作
使用inverse屬性
true: 放棄維護外鍵關係
false(預設值):維護關係
結論: 將來在開發中,如果遇到多對多關係.一定要選擇一方放棄維護關係.
一般誰來放棄要看業務方向. 例如錄入員工時,需要為員工指定所屬角色.
那麼業務方向就是由員工維護角色. 角色不需要維護與員工關係.角色放棄維護
<set name="users" table="sys_user_role" inverse="true" >
<key column="role_id" ></key>
<many-to-many class="User" column="user_id" ></many-to-many>
</set>