詳解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:以上四種都是。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
您可能感興趣的文章:- spring級聯屬性賦值的兩種方式解析
- springmvc級聯屬性處理無法轉換異常問題解決
- spring源碼學習之bean的初始化以及循環引用
- mybatis中實現讓返回值與bean中字段相匹配
- SpringBoot普通類獲取spring容器中bean的操作
- 解決Spring Boot 多模塊注入訪問不到jar包中的Bean問題
- 通過工廠模式返回Spring Bean方法解析
- Spring中BeanFactory和ApplicationContext的作用和區別(推薦)
- Spring內部bean和級聯屬性用法詳解