HIbernate inverse和cascade属性

来源:互联网 发布:cam360下载监控软件 编辑:程序博客网 时间:2024/06/05 03:48

【单向】

班级->多个学生

一对多关系:

one方配置:

1、加set集合(many方)

2、

<!-- 配置一对多关联关系 -->
<set name="students" table="student">
<key column="gid"></key>
<one-to-many class="com.imooc.entity.Student"/>
</set>

关键点:添加时将学生添加到集合     说白了(根据属性初始化班级)

多个学生->班级

多对一关系:

many方配置:

1、加one方引用

2、

<!-- 配置多对一关联关系 -->
<many-to-one name="grade" class="com.imooc.entity.Grade" 
column="gid" cascade="all"></many-to-one>

关键点:添加时将班级关联学生(班级)引用     说白了(根据属性初始化学生)

【双向】

班级<---->多学生

配置:

1、上面两种配置合起来

2、上面两种初始化和起来


 inverse和cascade属性:

 inverse:反转

one方的<set>节点的inverse属性指定关联关系的控制方向,默认值为false(不反转),one方为主动方,来维护

应用:在多对多关系时,只有让many方来维护关联关系, 不需要one方维护,这种做法可以提高性能    配置:inverse=true

<!-- 配置一对多关联关系 ,设置inverse="true",由多方来维护关联关系-->
<set name="students" table="student" inverse="true">
<key column="gid"></key>
<one-to-many class="com.imooc.entity.Student"/>
</set>


cascade:

设置属性不为none时,hibernate会自动持久化所关联的对象


应用(级联操作):

班级和学生建立关系后,只有保存班级,相应的学生也会自动保存在数据库

【one方级联操作配置】

<!-- 配置一对多关联关系 ,设置inverse="true",由多方来维护关联关系 
当进行保存和更新时级联操作相关联的对象-->
<set name="students" table="student" inverse="true" cascade="save-update">
<key column="gid"></key>
<one-to-many class="com.imooc.entity.Student"/>
</set>

【many方级联操作配置】

<!-- 配置多对一关联关系 设置级联操作对象 -->
<many-to-one name="grade" class="com.imooc.entity.Grade" 
column="gid" cascade="all"></many-to-one>

0 0
原创粉丝点击