Hibernate 一对一、一对多、多对多注解cascade属性的总结

作用:是否级联被注解字段里面的对象。可选值:javax.persistence.CascadeType.PERSIST, MERGE, REMOVE, REFRESH, DETACH, ALL。可选其中的一个或多个,选一个时,花括号可用可不用。

 

PERSIST级联session的persist操作。假设Student类和teachers字段的@ManyToMany注解上配置有cascade = {CascadeType.PERSIST},那么,当stu1对象set了一个teachers集合(这个集合里面的对象都是瞬态的),持久化这个stu1d对象时,这个集合里面的所有瞬态对象都会被级联持久化到数据库。
MERGE级联merge操作。道理同上。
REMOVE级联remove操作。道理同上。
REFRESH级联refresh操作。道理同上。
DETACH级联evict操作。道理同上。
ALL级联以上所有操作。

 

或者:使用Hibernate自身的CascadeType.可选值:

ALL
Includes all types listed here.
DELETE
Corresponds to the Hibernate native DELETE action.
DELETE_ORPHAN
Deprecated. 
use @OneToOne(orphanRemoval=true) or @OneToMany(orphanRemoval=true)
DETACH
Corresponds to  CascadeType.DETACH.
EVICT
Deprecated. 
LOCK
Corresponds to the Hibernate native LOCK action.
MERGE
Corresponds to  CascadeType.MERGE.
PERSIST
Corresponds to  CascadeType.PERSIST.
REFRESH
Corresponds to  CascadeType.REFRESH.
REMOVE
Corresponds to  CascadeType.REMOVE.
REPLICATE
Corresponds to the Hibernate native REPLICATE action.
SAVE_UPDATE
Corresponds to the Hibernate native SAVE_UPDATE (direct reattachment) action.

可见,除REPLICATE和SAVE_UPDATE是JPA.CascadeType里面没有的,其他的都一样。其中,DELETE对应JPA.CascadeType的REMOVE,DELETE_ORPHAN是不赞成的,DETACH和EVICT对应JPA.CascadeType的DETACH,作用是org.hibernate.Session的evict方法的作用。

REPLICATE:
SAVE_UPDATE:

 

JPA.CascadeType的所有枚举值,都对应了org.hibernate.Session的方法(DETACH对应evict)。关于Session的方法,参考另一边博客:http://www.cnblogs.com/565261641-fzh/p/6658747.html

 

转载于:https://www.cnblogs.com/fuzhihong0917/p/6658748.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值