Hibernate配置inverse与cascade详解

inverse配置

inverse决定是否把对对象中集合的改动反映到数据库中,所以inverse只对集合起作用,也就是只对one-to-many或many-to-many有效(因为只有这两种关联关系包含集合,而one-to-one和many-to-one只含有关系对方的一个引用)。inverse默认值为false,即多的一方默认不放弃维护关系。

cascade配置

cascade决定是否把对对象的改动反映到数据库中,所以cascade对所有的关联关系都起作用(因为关联关系就是指对象之间的关联关系)即对一方的CRUD操作,是否级联到相关联的一方。
在一对多关系中,通常设置为由多方维护关系,一方设置为放弃维护关系。同时对一方的操作,如删除,应级联引用的多方。

例(学生与班级)

1
2
3
4
5
6
7
8
9
10
11
12
<class name="com.jellybins.Clazz">
<id>...</id>
<!--此处inverse,cascade设置的对象都是班级,即班级不负责关系的维护,班级删除操作级联删除该班级的学生-->
<set name="students" inverse="true" cascade="delete">
<key>
<!--此处设置的是students集合中外键列的名称,此外键列值用于匹配班级的id列-->
<column name="calzz-id">
<!--此处设置为一对多关系多方集合中对象所属的类-->
<one-to-many class="com.rauy.Student">
<key>
</set>
</class>