Hibernate<五> 級聯和關係維護

一、Hibernate中的級聯操做:數據庫

在Hibernate中,針對持久化實體的配置文件中有Cascade這樣一個屬性,就是級聯,也就是說在操做當前實體時,針對當前實體的操做會影響到相應配置的關聯實體,好比針對當前實體進行保存操做時,會同時保存於其關聯的實體。經常使用的cascade:對象

none,all,save-update,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many)。配置

通常狀況下,many-to-one,many-to-many不設置級聯,在<one-to-one>和<one-to-many>中設置級聯。date

①、在一對一關聯關係中,當刪除當前實體時,會同時級聯刪除關聯實體,以解除二者的關聯關係。配置文件

②、在一對多關聯關係中,當刪除一方實體時,會同時級聯刪除多方實體,以解除二者的關聯關係。數據

③、在多對多關聯關係中,根據咱們對於多對多關聯關係的不一樣處理狀況,相應的級聯刪除行爲會有所不一樣,若是將多對多的關聯關係處理爲兩個一對多的關聯關係時,也就是說存在一箇中間實體用以代表二者的多對多關聯關係,那麼在刪除其中一方實體時,相應的級聯刪除操做並不會直接刪除中間實體,也就是二者的關聯關係,而是在中間實體中將其中一方設置爲null,這樣二者的關聯關係就相應的移除了。若是咱們將多對多關聯關係不做特殊處理,將之當作純粹的多對多關聯關係,也就是說沒有相應的中間實體,而只是在數據庫中保持一箇中間表來維護二者的關係,那麼當咱們刪除一方實體時,會相應的將數據庫中的中間表的相應數據給直接刪除。集合

二、Hibernate中的inverse文件

inverse經常使用於一對多雙向關聯和多對多關聯關係中,inverse的含義是,是否放棄維護關聯關係,在onet-to-many和many-tomany的集合定義中使用,inverse="true"表示該對象不維護關聯關係。該屬性在有序集合中(list,array)一般設置爲false。onet-to-many維護關聯關係就是更新外鍵,many-to-many維護關聯關係就是在中間表增減記錄。vi

注意;①、inverse只存在於集合中。cas

         ②、Hibernate不容許多的一端放棄維護關係。

相關文章
相關標籤/搜索