Hibernate中的cascade與inverse

Kunaly發表於2018-03-06

技術分析之級聯的取值(cascade的取值)和孤兒刪除

1. 需要大家掌握的取值如下
    * none                      -- 不使用級聯
    * save-update               -- 級聯儲存或更新
    * delete                    -- 級聯刪除
    * delete-orphan             -- 孤兒刪除.(注意:只能應用在一對多關係)
    * all                       -- 除了delete-orphan的所有情況.(包含save-update delete)
    * all-delete-orphan         -- 包含了delete-orphan的所有情況.(包含save-update delete delete-orphan)

2. 孤兒刪除(孤子刪除),只有在一對多的環境下才有孤兒刪除
    * 在一對多的關係中,可以將一的一方認為是父方.將多的一方認為是子方.孤兒刪除:在解除了父子關係的時候.將子方記錄就直接刪除。
    * <many-to-one cascade="delete-orphan" />

技術分析之讓某一方放棄外來鍵的維護,為多對多做準備

1. 先測試雙方都維護外來鍵的時候,會產生多餘的SQL語句。
    * 想修改客戶和聯絡人的關係,進行雙向關聯,雙方都會維護外來鍵,會產生多餘的SQL語句。

    * 產生的原因:session的一級快取中的快照機制,會讓雙方都更新資料庫,產生了多餘的SQL語句。

2. 如果不想產生多餘的SQL語句,那麼需要一方來放棄外來鍵的維護!
    * 在<set>標籤上配置一個inverse=”true”.true:放棄.false:不放棄.預設值是false
    * <inverse="true">

技術分析之cascade和inverse的區別

1. cascade用來級聯操作(儲存、修改和刪除)
2. inverse用來維護外來鍵的

相關文章