级联和关系维护(Cascade 和Inverse)

Cascade用来说明当对主对象进行某操作时, 是否对其关联的从对象也作类似的操作.

例如:删除主对象的同时 要不要删除从对象, 主对象不存在了,从对象理理论上出应删除.

   伦理片 http://www.dotdy.com/

常用的Cascade:  none , all, save-update , delete , lock , refresh , evict , replicate , persist, merge, delete-orphan(一对多,删除孤儿)


一般, 多对多, 多对一, 不设级联.  一对一, 一对多 中设置级联.






--------------------------------------------------------------------------------------------------

(Hibernate开发指南 作者:夏昕)


Inverse和Cascade


Inverse,直译为“反转”。在Hibernate语义中,Inverse指定了关联关系中的
方向。
关联关系中,inverse=”false”的为主动方(默认值),由主动方负责维护关联关系。具体可
参见一对多关系中的描述。


我补充:

      一般只能给<set><list>等集合标签设置 inverse


     "一对多"中,  一般在"一"的一方放弃维护权(inverse=”true” ).


     "多对多"中,无主从方, 有任意一方放弃维护权(inverse=”true” )都可以.

      前面做过的"老师"与"学生"的练习中:

            第一种维护关系的方法:  为老师set()学生,  不能为学生set () 老师 ,  SQL可以正确执行(否则中间表主键冲突).

            第二种维护关系的方法:  为老师set () 学生,   为学生se () t老师, 设置一方 放弃维护权(inverse=”true” ),  就可以正确执行.

 

 

-----------------------------------------------------------------------------------------------------------------------------------------
而Cascade,译为“级联”,表明对象的级联关系,如TUser的Cascade设为all,

就表明如果发生对user对象的操作,需要对user所关联的对象也进行同样的操作。如对
user对象执行save操作,则必须对user对象相关联的address也执行save操作。
初学者常常混淆inverse和cascade,实际上,这是两个互不相关的概念。Inverse
指的是关联关系的控制方向,而cascade指的是层级之间的连锁操作。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值