关于hibernate中invers跟cascade的一点看法

下午动手配了下一个简单的双向一对多关系

一下子居然想不起invers跟cascade的区别了

看了网上那些东西觉得更迷茫了

说invers是维护2个表之间的关系的

但是cascade也是2个表的级联操作

咋一看觉得没区别

后面慢慢想明白了

invers应该是只维护表跟表的关系

跟实际数据操作没关系

而cascade是指跟数据的实际操作有关系 跟表结构没关系

说通俗点就是 比如我有  user 跟 order2个对象是一对多关系

<set name="orders" lazy="true" inverse="true">
            <key column="user_id" not-null="true"/>
            <one-to-many class="Order" />
        </set>

    <many-to-one name="user" column="user_id" />

如果在user这端不设置invers=true

order是多的一端  many-to-one默认invers=flase

那么就会报错

因为这样2边都要维护关系

相当于在对应到表的时候

2端都要在order表中新建一个user_id字段

这样数据库就会报错

所以要其中一方交出控制权 要么是1的一方invers=true

要么是多的一方设置insert跟update都是false


而cascade只管你的实际数据的那些级联操作

对表关系没影响


按我的理解简单点说:invers是维护表关系 cascade是维护数据操作之间的关系。


不知道这理解有没有问题 有问题请大家提出来

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值