cascade和inverse属性

cascade属性
none:当session操纵当前对象时,忽略其他关联的对象。它是cascade属性的 默认值
save-update:当通过Session的save()、update()及saveOrUpdate()方法来保存或
更新当前对象时,级联保存所有关联的新建的临时对象,并且级联更新所有关联的游离对象
级联保存和更新
当hibernate持久化一个临时对象时,在默认情况下,他不会自动持久化所关联的其他临时对象,
会抛出TransientObjectException.如果设定set元素的cascade属性为save-update的话,
可实现自动持久化所关联的对象。


inverse属性
inverse=false 的为主动方(维护方),inverse=true 的为被动方, 由主动方负责维护关联关系
默认inverse=true,父子两边都维护父子关系
Inverse设值原则
   在 1-n 关系中,将 n 方设为主控方将有助于性能改善
在 1-N 关系中,若将 1 方设为主控方 会额外多出 update 语句


Inverse结论
1.在映射一对多的双向关联关系时,应该在one方把inverse属性设为true,这可以提高性能。
2.在建立两个对象的关联时,应该同时修改关联两端的相应属性:
*customer.getOrders().add(order);
*order.setCustomer(customer);
这样才会使程序更加健壮,提高业务逻辑层的独立性,使业务逻辑层的程序代码
不受Hibernate实现类的影响。
3、同理,当删除双向关联的关系时,也应该修改
关联两端的对象的相应属性:
Customer.getOrders().remove(order);
Order.setCustomer(null);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值