cascade与inverse的详解
一、cascade(级联)关系
解释:级联,就是对一个对象进行操作的时候,会把他相关联的对象也一并进行相应的操作,相关联的对象意思是指 比如前两节学的一对多关系中,班级跟学生,Student的实体类中,存在着Classes对象的引用变量,如果保存Classes对象的引用变量有值的话,则该值就是相关联的对象,并且在对student进行save时,如果保存Classes对象的引用变量有值,那么就会将Classes对象也进行save操作, 这个就是级联的作用。
举例
Staff.java 和 Staff.hbm.xml
public class Staff {
private int id;
private String name;
private Dept dept;
}
//Staff.hbm.xml
<hibernate-mapping>
<class name="oneToMany.Staff" table="staff">
<id name="id" column="id">
//设置的increment,这个应该看得懂,
<generator class="increment"></generator>
</id>
<property name="name"></property>
//name:staff实体类中的dept属性,column:子表中被外键约束修饰的字段名 class:Staff相关联的Dept类
<many-to-one name="dept" column="deptId" class="oneToMany.Dept"></many-to-one>
</class>
</hibernate-mapping>
Dept.java 和 Dept.hbm.xml
public class Dept {
private int id;
private String name;
private Set<Staff> staffSet = new HashSet<Staff>();
}
//Dept.hbm.xml
<hibernate-mapping>
<class name="oneToMany.Dept" table="dept">
<id name="id" column="id">
<generator class="increment"></generator>
</id>
<property name="name"></property>
//key:子表被外键约束修饰的字段名
<set name="staffSet">
<key column="deptId"></key>
<one-to-many class="oneToMany.Staff"/>
</set>
</class>
</hibernate-mapping>
配置了一个双向一对多的关联关系
//创建新部门
Dept dept = new Dept();
dept.setName("er部门");
//创建新的职员
Staff staff = new Staff();
staff.setName("www");
//给职员中添加部门
staff