Hibernate的多表關系
阿新 • • 發佈:2019-04-11
key cascade 優化 tro 默認值 語句 映射 反轉 重復
多表關系
一對多/多對一
O 對象 一的一方使用集合. 多的一方直接引用一的一方.
R 關系型數據庫 多的一方使用外鍵引用一的一方主鍵.
M 映射文件:
一: <set name=""> <key column="" /> <one-to-many class="" /> </set> 多: <many-to-one name="" column="" class="" />
操作: 操作管理級別屬性.
cascade: 級聯操作
//減少我們書寫的操作代碼.
none(默認值) 不級聯
save-update: 級聯保存
delete:級聯刪除
all: 級聯保存+級聯刪除
結論: 可以使用save-update.不推薦使用delete. 也可以不用cascade.
inverse: 反轉關系維護
屬於性能優化.關系的兩端如果都書寫了關系.那麽兩方都會發送維護關系的語句.
這樣,語句就發生重復.我們可以使用inverse使一的一方放棄維護關系.
true放棄
false(默認值)維護
結論: 在一對多中,一的一方可以放棄維護關系.
多對多
O 對象兩方都使用集合.
R 關系型數據庫使用中間表.至少兩列.作為外鍵引用兩張表的主鍵.
M 映射文件:
多: <set name="" table="中間表名" > <key column="別人引用我" /> <man-to-many class="" column="我引用別人的" /> </set>
操作:操作管理級別屬性.
cascade: 級聯操作
減少我們書寫的操作代碼.
none(默認值) 不級聯
save-update: 級聯保存
delete:級聯刪除
all:級聯保存+級聯刪除
結論: 可以使用save-update.不推薦使用delete. 也可以不用cascade.
inverse: 反轉關系維護
//屬於性能優化.必須選擇一方放棄維護主鍵關系.哪方放棄要看業務方向.
Hibernate的多表關系