1. 程式人生 > >Hibernate cascade級聯屬性的CascadeType的用法

Hibernate cascade級聯屬性的CascadeType的用法

cascade(級聯)

級聯在編寫觸發器時經常用到,觸發器的作用是當 主控表資訊改變時,用來保證其關聯表中資料同步更新。若對觸發器來修改或刪除關聯表相記錄,必須要刪除對應的關聯表資訊,否則,會存有髒資料。所以,適當的做法是,刪除主表的同時,關聯表的資訊也要同時刪除,在hibernate中,只需設定cascade屬性值即可。

cascade表示級聯操作,在hibernate配置註解@OneToOne,@OneToMany,@ManyToMany,@ManyToOne中的屬性。

例如:

@ManyToOne(cascade = CascadeType.REFRESH, optional = true)
@JoinColumn(name = "user_id", unique = false)
private UserBaseInfo userBaseInfo;

配置多種級聯,例如:

@OneToOne(cascade = {CascadeType.REFRESH,CascadeType.PERSIST,CascadeType.MERGE}, optional = true)
@JoinColumn(name = "user_id", unique = false)
private UserBaseInfo userBaseInfo;

CascadeType.PERSIST級聯新增(又稱級聯儲存):對order物件儲存時也對items裡的物件也會儲存。對應EntityManager的presist方法。

CascadeType.MERGE級聯合並(級聯更新)

:若items屬性修改了那麼order物件儲存時同時修改items裡的物件。對應EntityManager的merge方法 。

CascadeType.REMOVE級聯刪除:對order物件刪除也對items裡的物件也會刪除。對應EntityManager的remove方法。

CascadeType.REFRESH級聯重新整理:獲取order物件裡也同時也重新獲取最新的items時的物件。對應EntityManager的refresh(object)方法有效。即會重新查詢資料庫裡的最新資料。

CascadeType.ALL:以上四種都是。

參考文章:http://www.2cto.com/kf/201305/209255.html (Hibernate 註解中CascadeType用法彙總)