HIbernate inverse和cascade属性

【单向】

班级->多个学生

一对多关系:

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值