cascade和inverse属性

来源:互联网 发布:标签打印软件下载 编辑:程序博客网 时间:2024/06/06 12:47

一,cascade 级联

Cascade用来说明当对主对象进行操作的时候是否对其从对象也进行类似的操作:

none,all ,save-update,delete,lock,refresh,evict,replicate,persist,merge, delete-orphan(对于这个是删除孤儿对象的,对于员工和部门两个对象,如果员工的部门改变了,并且这个部门在部门表中并没有,比如说设置为空,部门表就删掉员工)

二,inverse(是否放弃关系的维护,只会在集合里面有)

对于一对多的关系,一般在一的一方放弃维护关系,这样可以提高效率,在多的一方是没有

只有两个属性:truefalse,

True: 放弃维护关系

False:不放弃维护关系

<set name=".." inverse="true">

.....

</set>

三,对于有序集合的inverse属性

<list name>

<key></key>

<list-index></list-index>

<many-to-one></many-to-one>

</list>

对于有序集合,inverse属性是不能用的,因为对于list集合来说,要维持加入进来的对象的顺序,所以当有了inverse="true" ,那么顺序就没有意义了,所以对于有序的集合不能用inverse属性;

四,对于多对多的inverse属性

对于多对多来说,可以在任何一方来放弃维护关系,另一方来维护关系,

但是对于多对多来说,在添加到中间表的数据只能是一方来添加,如果两方同时添加的话,那么就在添加到中间表会出现两次相同的记录,会报错,但是你在一方加了inverse属性之后,就不会报错了,因为已经放弃了关系的维护:

如:teacher ------- student 

两个 student 对象: stu1 ,stu2 

一个老师对象: teacher

不能这样 stu1,setTeacher(teacher);stu2.setTeacher(teacher); teacher.serStudent(stu1),teacher.setStudent(stu2);

原创粉丝点击