hibernate的级联操作

hibernate的级联操作

在hibernate的操作中可以进行级联操作来避免对关联对象的重复操作。
 hibernate中的持久化的操作都对应了相应的级联风格。
 merge()-----merge
 delete()----delete
 saveOrUpdate()----save-update
 refresh()---refresh
 evict()---evict
在配置文件中默认的时none,即任何操作都不会被级联。
在配置文件中也可以指定为all此时时对所有的操作都进行相应的级联操作。

级联风格可以组合,如:<one-to-one name="person" cascade="delete,save-update">

注意:另一种级联风格为:delete-orphan,只应用于one-to-many关联,表明delete()操作应该被应用于所有从关联中删除的对象。

除非被标记为cascade="delete-orphan"(删除“孤儿”模式,此时不被任何一个父对象引用的子对象会被删除), 否则子对象失掉父对象对其的引用时,什么

事也不会发生。 如果有特殊需要,应用程序可通过显式调用delete()删除子对象。

 

save()操作是直接在数据库内持久化一个新的对象,
update()操作是将修改一个给定标识的持久化对象,如果当前session中存在一个相同标识的持久化对象,将会抛出异常。
saveOrUpdate()操作是当当前session存在一个持久化对象时就会修改此对象,如果不存在就会持久化一个新的对象,当你修改的对象中设置了标示符的值时但是

此标示符表示的对象在数据库中没有相应的记录时将会报错。
merge()操作是拷贝一个对象来改变和当前session关联的相同的标识的持久化对象,如果当前session中不存在相同标识的对象,就会重新加载一个相同标识的对

象,若被对象还没有被持久化,将会持久化被对象并返回持久化的对象。同时原来的对象将不会改变。

以上操作将会根据配置文件中配置的级联风格来相应的改变子类。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值