歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Hibernate級聯(cascade和inverse)

級聯(Cascade),兩個以上的設備通過某種方式連接起來,能起到擴容的效果就是級聯。Hibernate級聯(Cascade)是用來說明數據庫中連個表之間的相互關系(一對一,一對多,多對多)中,當對主對象進行某種操作時,是否也對其關聯的從對象作類似的操作,常見的級聯(Cascade)有:
(1)none:在保存,刪除或者修改當前對象時,不對其附屬對象(關聯對象)進行級聯操作,它為默認值。
(2)save-update:在保存,更新當前對象時,級聯保存,更新附屬對象(臨時對象,游離對象等)。
(3)delete:在刪除當前對象時,級聯刪除附屬對象
(4)all:所有情況下均進行級聯操作,
(5)delete-orphan:刪除此對象的同時刪除與當前對象解除與當前對象解除關系的孤兒對象(僅僅使用於一對多關聯關系中)

對Hibernate session的每一個基本操作,如:persist(),merge(),saveOrUpdate(),delete(),lock(),refresh(),evict(),replicate(),都有一個相關的級聯形式與之對應。

inverse: 表示“是否放棄維護關聯關系”(在Java裡兩個對象產生關聯時,對數據庫中表的影響),hibernate的缺省值為false。在<one-to-many>和<many-to-many>關聯關系的集合定義中使用,inverse="true"表示該對象不維護關聯關系。該屬性的值在使用有序集合時(list,array等)時一般設置為false.<one-to-many>維護關聯關系就是更新外鍵;<many-to-many>維護關聯關系就是在中間表中增減記錄!

cascade 和inverse的區別:
可以這樣理解,cascade 定義的是關系兩端對象到對象的級聯關系;而inverse定義的是關系和對象的級聯關系。

Copyright © Linux教程網 All Rights Reserved