Hibernate 级联--cascade

所谓级联操作就是说,当你进行某个操作(添加/修改/删除...),就由hibernate自动给你完成.

》比如: Department <---->Student 对象关系,我希望当我删除一个department ,那么就自动删除该部门的所有学生?

》再比如: bbs项目     主帖<---->回帖 , 把主帖删除,那我们就希望把该主帖的回帖自动删除,这样我们可以使用级联(cascade)操作

l Casade用来说明当对主对象进行某种操作时是否对其关联的从对象也作类似的操作,常用的cascade:

  none,all,save-update ,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many)

一般对many-to-one,many-to-many不设置级联,在<one-to-one><one-to-many>中设置级联。


案例:如何配置级联操作,当删除某个部门的时候,我们自动删除其学生:

a.首先我们在 配置文件中修改:

<!-- 配置one-to-many关系

  cascade="delete" 当删除该部门的时候(主对象,则级联删除它的学生从对象) -->

<set  name="stus" cascade="delete">

<!-- 指定Student类对应的外键 -->

<keycolumn="dept_id" />

<one-to-manyclass="Student" />

</set>

   b.java代码中操作:

//演示删除级联

                     //获取到某个部分

                     Departmentdepartment=(Department) s.get(Department.class, 41);

                     s.delete(department);


 演示save-update:

配置文件:

<setname="stus" cascade="save-update">

<!-- 指定Student类对应的外键 -->

<keycolumn="dept_id" />

<one-to-manyclass="Student" />

</set>

代码:

//添加学生

Department department=new Department();

department.setName("业务部门3");

                    

Student stu1=new Student();

stu1.setName("顺平6");

//    stu1.setDept(department);

                     Studentstu2=new Student();

                     stu2.setName("小明6");

              //     stu2.setDept(department);

                     Set<Student>students=new HashSet<Student>();

                     students.add(stu1);

                     students.add(stu2);

                     department.setStus(students);

                    

                     s.save(department);


说明:

在集合属性和普通属性中都能使用cascade

一般讲cascade配置在one-to-many(one的一方,比如Employee-Department),one-to-one(主对象一方)


常用的cascade:

  none,all,save-update ,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many)

一般对many-to-one,many-to-many不设置级联,在<one-to-one><one-to-many>中设置级联。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值