Hibernate inverse属性与cascade属性

理解:

inverse属性为false的那一端,拥有管理关系维护的权利

cascade属性指级联,说的通俗点,在cascade那端指定的操作,会影响到所关联的对象


举个例子:

班级和学生的关系是一对多

班级class类包含id,名称和学生的Set集合

学生student类包含id,姓名和班级的id(外键)


cascade属性:学生是依赖班级存在的,班级不存在,那么学生也不存在。也就是说,删除班级的同时,学生也就得删除,而不能反过来。一的那端删除时,多的那方已经没有意义了;而多的那端删除时,并不能代表一的那端没有意义。有点绕。那么属性设置是,class 设置“all",student设置“save-update”,那样,对class的操作都能影响student,对student的操作之后保存和更新才影响class。


inverse属性:这个属性是具有管理和维护权利的,在一对多的关系中,如果设置班级有这个权利,那么班级会管理维护学生集合,当保存班级时,就会更新所有学生集合里的外键属性,这不是我们想要的,当数量很多时,性能不好。而如果把这个权利交给学生时,保存班级时,就不会更新学生集合里的属性,这个外键可以由我们自己手动设置。通俗点说就是,班级如果选择学生,那么会修改学生的班级属性;如果反过来,学生选择班级,学生里的班级属性已经设置了,不用班级去操心了,世界清净了。


以上都是我个人的理解,网上看到的经验是:inverse属性一般是由多端维护,多对多的情况选择一端维护,不要两端都维护,cascade属性一般是一端设置“all”,多端设置“save-update”。


ok,世界清净了。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值