天天看點

hibernate中,配置inverse和cascade的作用

invoerst 設定為true 交給另一方去添加資料,flase時,為雙方進行管理

cascade 為級聯 屬性為 delete, update, all, none

要注意的一點:在雙向關聯的關系中,映射的column(和table)的值要一緻(即要用相同的表名和列名),不然設定為inverse="true"的這方将失去這個雙向關系,而變成了一個單向關聯。

Inverse和Cascade的比較

Inverse:負責控制關系,預設為false,也就是關系的兩端都能控制,但這樣會造成一些問題,更新的時候會因為兩端都控制關系,于是重複更新。一般來說有一端要設為true。

Cascade:負責控制關聯對象的級聯操作,包括更新、删除等,也就是說對一個對象進行更新、删除時,其它對象也受影響,比如我删除一個對象,那麼跟它是多對一關系的對象也全部被删除。

舉例說明差別:删除“一”那一端一個對象O的時候,如果“多”的那一端的Inverse設為true,則把“多”的那一端所有與O相關聯的對象外鍵清空;如果“多”的那一端的Cascade設為Delete,則把“多”的那一端所有與O相關聯的對象全部删除。

繼續閱讀