日期:2014-05-18  浏览次数:20706 次

Hibernate中 级联的问题
级联到底有什么用?
(在进行级联操作时,为了提高性能,会在一方关系属性中追加inverse="true"设置,目的是让一方放弃关系维护操作)放弃关系维护操作又是什么意思?

------解决方案--------------------
这样说吧。
比如我删除一个老师对象,一个老师肯定会教很多学生,这样的话老师和学生之间有一个外键锁关联着。
级联的话如果删除老师,学生跟着被删除、
这样老师和学生都删除。
放弃维护,就是只删除老师呗
------解决方案--------------------
这个问题,你应该是直接百度或者google的
inverse 主要是主外键关系的维护.不会删除级联对像.只能集合起作用
比如:
老师和学生的关系

class Student{
}
class Teacher{
   Set<Student> students = new HashSet<Student>();
}

当在Teacher 端  inverse = false 时,
执行:
假定有个学生Set集合为 students
Teacher t = new Teacher();
t.setStudents(students)
save(t);

数据库执行时就会
1、先保存t
2、然后保存students
3、然后把t生成的主键,update到student与teacher的关系外键上.


当inverse = true时
第3歩update就不需要.student自己去维护与teacher的外键关系.即第2歩就会之间把外键与学生实体直接保存到学生表中.也即老师不负责维护与学生的外键关系,也就是你说的放弃关系维护操作


2楼说的级联删除,需要结合另一个属性cascade,当cascade="delete"时,删除老师将会同时删除学生.
这些概念的东西完全可以google的,很基础的东西...