Hibernate中的级联

Hibernate级联和关系维护:

以上面的代码为例说明:
有两个类,Employee员工类,Department部门类
很明显员工是属于部门类,因此Employee中含有Department的属性,来表示员工的部门信息
以部门为参照,两表的关系是一对多,当执行上面的方法(用来保存员工)时候,要创建一个部门对象
依照上面的方法,员工以Set集合的方法赋给部门的属性了,一般认为应该是只用保存部门就可以把两
个员工信息保存进数据库了,但是程序运行结果却没有保存Department类中的Set<Employee>类型
的employee属性,为什么?
它能把员工的id,name属性保存下来,但是没有把employee(Set<Employee>类型)属性保存
解释:Hibernate在保存数据的时候默认情况下不会把有关联的属性保存起来,而employee属性就是
Department和Employee类关联的属性,因此在默认情况下,没有保存
这是一种缺省的行为,这种行为是可以修改的,可以在映射文件中配置级联就可以了
下面是Department部门类的映射文件,可以这样配置一下employee属性:

标签说明:
Cascade:
用来说明当主对象进行某种操作时是否对其级联的从对象也进行类似的操作,
常用的cascade值有:
 none  缺省值,就是不会进行类似的操作
 all   所有的,就是对所有的操作都要进行级联操作
 save-update 保存和更新级联
 delete-orphan(one-to-many) 删除级联  拿部门和员工说明,如果把某一个部门的信息删除或修改为空,
 那么他相对应的从属的所有员工信息也会被删除
 delete
 lock
 refresh
 evict
 replicate
 persist
 merge

级联要根据业务需求,一般many-to-many,many-to-one关系中不配置级联,在one-to-one,
one-to-many设置级联,慎用!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值