關於hibernate中invers跟cascade的一點看法

下午動手配了下一個簡單的雙向一對多關係

一下子居然想不起invers跟cascade的區別了

看了網上那些東西覺得更迷茫了

說invers是維護2個表之間的關係的

但是cascade也是2個表的級聯操作

咋一看覺得沒區別

後面慢慢想明白了

invers應該是隻維護表跟表的關係

跟實際數據操作沒關係

而cascade是指跟數據的實際操作有關係 跟表結構沒關係

說通俗點就是 比如我有  user 跟 order2個對象是一對多關係

<set name="orders" lazy="true" inverse="true">
            <key column="user_id" not-null="true"/>
            <one-to-many class="Order" />
        </set>

    <many-to-one name="user" column="user_id" />

如果在user這端不設置invers=true

order是多的一端  many-to-one默認invers=flase

那麼就會報錯

因爲這樣2邊都要維護關係

相當於在對應到表的時候

2端都要在order表中新建一個user_id字段

這樣數據庫就會報錯

所以要其中一方交出控制權 要麼是1的一方invers=true

要麼是多的一方設置insert跟update都是false


而cascade只管你的實際數據的那些級聯操作

對錶關係沒影響


按我的理解簡單點說:invers是維護表關係 cascade是維護數據操作之間的關係。


不知道這理解有沒有問題 有問題請大家提出來

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章