Hibernate 关系映射之级联
首先,第一个问题,什么是级联。
引用百度的:
级联还指用来设计一对多关系。例如一个表存放老师的信息:表A(姓名,性别,年龄),姓名为主键。还有一张表存放老师所教的班级信息:表B(姓名,班级)。他们通过姓名来级联。级联的操作有级联更新,级联删除。 在启用一个级联更新选项后,就可在存在相匹配的外键值的前提下更改一个主键值。系统会相应地更新所有匹配的外键值。如果在表A中将姓名为张三的记录改为李四,那么表B中的姓名为张三的所有记录也会随着改为李四。级联删除与更新相类似。如果在表A中将姓名为张三的记录删除,那么表B中的姓名为张三的所有记录也将删除。
简单的说,还是引用我的区县、街道例子,就是我将区县删除了,街道就不能存在了。
还是来看到代码:
District.hbm.xml
在这里设置了两个属性inverse 和 casecade
inverse 属性的使用:设置关联关系的维护 false用于自身维护,true用于对方维护
注意:在一对多关联关系中将inverse设置为true。
casecade 属性的操作 null/all/delete/sava-update
上两段代码:
写以以上代码时,不用设置inverse和casecade的,但是session.sava()要将区县,街道全部保存。
写以上代码时是需要将inverse和casecade写进去的,则不需要单独保存Street对象。
另外在删除时,没有设置级联的则在删除区县的时候,街道不会删除。
THE END