hibernate级联 cascade属性(转)

在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,顾名思义就是级联,也就是说在操作当

前实体时,针对当前实体的操作会影响到相应配置的关联实体。比如针对当前实体进行保存操作时,会同时保存

与其关联的实体,当然这种额外操作的产生取决于你是否在当前实体的配置文件中对关联实体的元素配置了

Cascade属性。

 

而需要进行级联的操作可能涉及到增加,修改,删除等相应的数据库操作,具体Cascade的取值则

分为多种,如all,表示针对所有操作都会进行级联,如save-update,表示针对插入和修改会进行级联操作。对

于Cascade的取值问题需要根本具体需求而定,这里没有一个统一的标准应该取怎样的值符合你的需要。从现实

需求分析来决定应该如何取值。

 

all ::             所有情况下均进行关联操作。
none:              所有情况下均不进行关联操作。这是默认值。
save-update:       在执行save/update/saveOrUpdate时进行关联操作。
delete:            在执行delete时进行关联操作。


all的意思是save-update + delete


all-delete-orphan 的意思是当对象图中产生孤儿节点时,在数据库中删除该节点


举个例子说一下all-delete-orphan:
Category与Item是一对多的关系,也就是说Category类中有个Set类型的变量items. 举个例子,现items中存两个

Item, item1,item2,如果定义关系为all-delete-orphan当items中删除掉一个item(比如用remove()方法删除

item1),那么被删除的Item类实例将变成孤儿节点,当执行category.update(),或session.flush()时hibernate同

步缓存和数据库,会把数据库中item1对应的记录删掉。

 

参考博客:

http://dreamzhong.iteye.com/blog/1273157

http://apps.hi.baidu.com/share/detail/5946383

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值