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

本文详细解释了Hibernate框架中的Cascade和Inverse属性的作用。Cascade定义了如何将对主对象的操作传递给关联对象,而Inverse则指定了关联关系的维护方向。通过具体的例子,帮助读者更好地理解这两个概念的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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


常用的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指的是层级之间的连锁操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值