Hibernate级联(cascade和inverse)


级联(Cascade),两个以上的设备通过某种方式连接起来,能起到扩容的效果就是级联。Hibernate级联(Cascade)是用来说明数据库中连个表之间的相互关系(一对一,一对多,多对多)中,当对主对象进行某种操作时,是否也对其关联的从对象作类似的操作,常见的级联(Cascade)有:
(1)none:在保存,删除或者修改当前对象时,不对其附属对象(关联对象)进行级联操作,它为默认值。
(2)save-update:在保存,更新当前对象时,级联保存,更新附属对象(临时对象,游离对象等)。
(3)delete:在删除当前对象时,级联删除附属对象
(4)all:所有情况下均进行级联操作,
(5)delete-orphan:删除此对象的同时删除与当前对象解除与当前对象解除关系的孤儿对象(仅仅使用于一对多关联关系中)

对Hibernate session的每一个基本操作,如:persist(),merge(),saveOrUpdate(),delete(),lock(),refresh(),evict(),replicate(),都有一个相关的级联形式与之对应。

inverse: 表示“是否放弃维护关联关系”(在Java里两个对象产生关联时,对数据库中表的影响),hibernate的缺省值为false。在<one-to-many>和<many-to-many>关联关系的集合定义中使用,inverse="true"表示该对象不维护关联关系。该属性的值在使用有序集合时(list,array等)时一般设置为false.<one-to-many>维护关联关系就是更新外键;<many-to-many>维护关联关系就是在中间表中增减记录!

cascade 和inverse的区别:
可以这样理解,cascade 定义的是关系两端对象到对象的级联关系;而inverse定义的是关系和对象的级联关系。

相关内容