hibernate配置參數

來源:互聯網
上載者:User

標籤:lan   一致性   net   實體類   遍曆   hiberna   知識庫   本質   檔案中   

1、含義:

inverse="true"就是反轉控制器=真;也就是由對方控制,

inverse="false"就是反轉控制器=假;也就是不用對方控制,由自己控制

2、到底在哪用inverse="ture"?   

   “set的inverse屬性決定是否把對set的改動反映到資料庫中去。inverse=false————反映;inverse=true————不反映”inverse屬性預設為false

  inverse屬性預設是false的,就是說關係的兩端都來維護關係。這個意思就是說,如有一個Student,   Teacher和TeacherStudent表,Student和Teacher是多對多對多關係,這個關係由TeacherStudent這個表來表 現。那麼什麼時候插入或刪除TeacherStudent表中的記錄來維護關係呢?在用hibernate時,我們不會顯示的對 TeacherStudent表做操作。對TeacherStudent的操作是hibernate幫我們做的。hibernate就是看hbm檔案中指 定的是"誰"維護關係,那個在插入或刪除"誰"時,就會處發對關係表的操作。前提是"誰"這個對象已經知道這個關係了,就是說關係另一頭的對象已經set 或是add到"誰"這個對象裡來了。前面說過inverse預設是false,就是關係的兩端都維護關係,對其中任一個操作都會處發對錶系表的操作。當在 關係的一頭,如Student中的bag或set中用了inverse="true"時,那就代表關係是由另一關維護的(Teacher)。就是說當這插 入Student時,不會操作TeacherStudent表,即使Student已經知道了關係。只有當Teacher插入或刪除時才會處發對關係表的 操作。所以,當關係的兩頭都用inverse="true"是不對的,就會導致任何操作都不處發對關係表的操作。當兩端都是inverse= "false"或是default值是,在代碼對關係顯示的維護也是不對的,會導致在關係表中插入兩次關係。

3、如何用,有好處?

在一對多關聯性中inverse就更有意義了。在多對多中,在哪端inverse="true"效果差不多(在效率上)。但是在一對多中,如果要一方維護關 系,就會使在插入或是刪除"一"方時去update"多"方的每一個與這個"一"的對象有關係的對象。而如果讓"多"方面維護關係時就不會有update 操作,因為關係就是在多方的對象中的,直指插入或是刪除多方對象就行了。當然這時也要遍曆"多"方的每一個對象顯示的操作修關係的變化體現到DB中。不管 怎樣說,還是讓"多"方維護關係更直觀一些。

讓多方維護好處的驗證見:http://www.cnblogs.com/Mr-Wu/archive/2012/09/24/2700023.html

    (1)對one-to-many而言,改變set,會讓hibernate執行一系列的update語句, 不會delete/insert資料

    (2)對many-to-many而言,改變set,只修改關係表的資料,不會影響many-to-many的另一方。

    (3)雖然one-to-many和many-to-many的資料庫操作不一樣,但目的都是一個:維護資料的一致性。  

總結

理解Inverse的本質含義是為了最佳化你的hibernate代碼,它可以避免許多不必要的update語句,如上述的“inverset=ture下的insert與update的例子”。

最後記住:inverse=“true”告訴hibernate具有關聯關係的兩個實體類哪一個是維護二者關係的關係擁有者。

 

 

 

 

 

 

 

 

 

 

hibernate配置參數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.