Hibernate学习之级联操作
来源:互联网 发布:网络语种草是什么意思 编辑:程序博客网 时间:2024/05/17 03:40
Hibernate学习之级联操作:
级联操作
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>中设置级联。
比如: Department <---->Student 对象关系,我希望当我删除一个department ,那么就自动删除该部门的所有学生
再比如: bbs项目
主帖<---->回帖 , 把主帖删除,那我们就希望把该主帖的回帖自动删除,这样我们可以使用级联(cascade)操作
案例:如何配置级联操作,当删除某个部门的时候,我们自动删除其学生.
首先我们在 配置文件中修改:
<!-- 配置one-to-many关系
cascade="delete" 当删除该部门的时候(主对象,则级联删除它的学生从对象) -->
<set name="stus" cascade="delete" >
<!-- 指定Student类对应的外键 -->
<key column="dept_id" />
<one-to-many class="Student" />
</set>
java代码中操作:
//演示删除级联
//获取到某个部分
Department department=(Department) s.get(Department.class, 41);
s.delete(department);
演示save-update
配置文件:
<set name="stus" cascade="save-update" >
<!-- 指定Student类对应的外键 -->
<key column="dept_id" />
<one-to-many class="Student" />
</set>
代码:
//添加学生
Department department=new Department();
department.setName("业务部门3");
Student stu1=new Student();
stu1.setName("张三6");
//stu1.setDept(department);
Student stu2=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(主对象一方)
级联操作
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>中设置级联。
比如: Department <---->Student 对象关系,我希望当我删除一个department ,那么就自动删除该部门的所有学生
再比如: bbs项目
主帖<---->回帖 , 把主帖删除,那我们就希望把该主帖的回帖自动删除,这样我们可以使用级联(cascade)操作
案例:如何配置级联操作,当删除某个部门的时候,我们自动删除其学生.
首先我们在 配置文件中修改:
<!-- 配置one-to-many关系
cascade="delete" 当删除该部门的时候(主对象,则级联删除它的学生从对象) -->
<set name="stus" cascade="delete" >
<!-- 指定Student类对应的外键 -->
<key column="dept_id" />
<one-to-many class="Student" />
</set>
java代码中操作:
//演示删除级联
//获取到某个部分
Department department=(Department) s.get(Department.class, 41);
s.delete(department);
演示save-update
配置文件:
<set name="stus" cascade="save-update" >
<!-- 指定Student类对应的外键 -->
<key column="dept_id" />
<one-to-many class="Student" />
</set>
代码:
//添加学生
Department department=new Department();
department.setName("业务部门3");
Student stu1=new Student();
stu1.setName("张三6");
//stu1.setDept(department);
Student stu2=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(主对象一方)
- Hibernate学习之级联操作
- hibernate 之 级联操作
- Hibernate学习笔记:级联操作
- Hibernate学习笔记:级联操作
- hibernate进阶之级联操作
- Hibernate级联操作学习之持久化临时对象
- Hibernate 学习笔记 之 一对多关系 及其 级联操作
- 【Hibernate学习】——级联操作
- Hibernate级联操作Cascade学之---delete
- Hibernate学习之级联操作1——一对多关联关系
- Hibernate学习之级联操作2——一对多双向自身关联关系
- Hibernate学习之级联操作3——一对一关联关系
- Hibernate学习之级联操作4——多对多关联关系
- Hibernate 学习笔记 之 多对多关系 及其 级联操作
- Hibernate的学习之路二十七(多对多操作级联)
- HIBERNATE中级联操作
- hibernate 级联操作
- hibernate的级联操作
- Hibernate学习之持久化对象
- 函数参数压栈,栈帧ebp,esp怎样移动的?
- C# base和this
- Extjs4---Uncaught TypeError: Cannot call method 'apply' of undefined
- SQL自学笔记(1)
- Hibernate学习之级联操作
- php 源码结构
- switch 与 if/else
- 网站分析基础概念之维度与度量
- 关于android的一个常见错误:Unable to add window --token is not valid; is your activity running?
- ④绝一首--雨过文字舞
- WEB打印系列教程之一--基于Web的打印方案比较分析
- 图结构入门
- 从那一天起,你就成了我的全部