正確理解hibernate的inverse屬性

2021-09-22 10:33:22 字數 1063 閱讀 4130

1)

inverse

中提及的side其實是指乙個類或者表的概念,雙向關聯其實是指雙方都可以取得對方的應用。 

2)維護關係這個名詞還是稍顯模糊或者晦澀。我們一般說a類或者a表(這裡的表的是指多對多的連線表)有責任維護關係,其實這裡的意思是說,我在應用在更新,建立,刪除(讀就不用說了,雙向引用正是為了方便讀而出現)a類或者a表時,此時建立的sql語句必須有責任保證關係的正確修改。 

3)inverse=false

的side(side其實是指

inverse=false

所位於的class元素)端有責任維護關係,而

inverse=true

端無須維護這些關係。 

4)我們說

inverse

設立不當會導致效能低下,其實是說

inverse

設立不當,會產生多餘重複的sql語句甚至致使jdbc exception的throw。這是我們在建立實體類關係時必須需要關注的地方。一般來說,

inverse=true

是推薦使用,雙向關聯中雙方都設定

inverse=false

的話,必會導致雙方都重複更新同乙個關係。但是如果雙方都設立

inverse=true

的話,雙方都不維護關係的更新,這也是不行的,好在一對多中的一端:many-to-one預設是

inverse=false

,避免了這種錯誤的產生。但是對多對就沒有這個預設設定了,所以很多人經常在多對多的兩端都使用

inverse=true

,結果導致連線表的資料根本沒有記錄,就是因為他們雙分都沒有責任維護關係。所以說,雙向關聯中最好的設定是一端為

inverse=true

,一端為

inverse=false

。一般inverse=false

會放在多的一端,那麼有人提問了,many-to-many兩邊都是多的,

inverse

到底放在哪兒?其實hibernate建立多對多關係也是將他們分離成兩個一對多關係,中間連線乙個連線表。所以通用存在一對多的關係,也可以這樣說:一對多是多對多的基本組成部分

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...

正確理解 clear both

原文 要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳...

正確理解 clear both

要注意以下幾點 1 浮動元素會被自動設定成塊級元素,相當於給元素設定了display block 塊級元素能設定寬和高,而行內元素則不可以 2 浮動元素後邊的非浮動元素顯示問題。3 多個浮動方向一致的元素使用流式排列,此時要注意浮動元素的高度。4 子元素全為浮動元素的元素高度自適應問題。以下詳細分析...