今天写东西,在配置关系时 ,随后就将cascade 配置, 而且配的值是false . 尼玛 ,结果很悲催,已启动就报错 ,弄得我云里雾里的,后来仔细检查发现原来是cascade在做该。现总结一下。顺便复习一下inverse .
1.cascade 层叠,有了它我们在操作删除和更新的时候会更加方便。只要在cascade的源头插入或者删除,所有cascade 的关系就会被动的插入或者删除。cascade 有一个值很重要,saveOrUpdate ,Hibernate根据这个属性值来判断一个对象时插入还是更新,如果这个对象的id 不存在那么就是insert ,否则就是update .
2.inverse 反转 。默认是false,就是说两端都来维护关系。这个意思就是说,如果一个student,teacher 表 。当一方在hbm的配置中set 中指定cascade 为true时,即表示关系由另一方来维护,换言之,甲方中的配置文件中设置cascade 为true,那么此时在甲方插入一条数据时不会影响乙方了。只有当乙方插入或删除数据时才会对甲方的进行操作。
所有在两方都配置cascade是不对的,一般情况下都将关系设置在多的一方。
3.cascade和inverse的区别
总结:cascade定义的是关系两端对象到对象的级联关系,而inverse定义的是关系和对象的级联关系。
两者的取值有:all :sava+update+delete
none :所有的情况下都不进行级联操作。这是默认值
save-update:在执行sava /update/saveOrUpdate是进行级联操作
delete :在执行delete时执行级联操作。
Hibernate 配置文件 细节 cascade inverse