inverse和cascade

本文解析了ORM中inverse与cascade属性的作用,介绍如何通过设置这些属性实现对象关系映射中不同表之间的关联维护和级联操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

inverse,表示两个表的关系由谁维护。值为false的一方将维护这种关系。如下面多对多关系中,由HOST来维护它们之间的关系表hostalarmrule。

cascade,表示更新本表时,是否附带更新与其相关的其它表。如下面,更新HOST表,由于值为save-update,也会将rules增加或者更新到ALARMRULE表;但,删除HOST时,不会删除ALARMRULE表中数据。除非,其值为all。

    <class name="db.Host" table="host" catalog="rw">
        <set name="rules" inverse="false" table="hostalarmrule" cascade="save-update">
            <key column="host_id"/>
            <many-to-many class="db.Alarmrule" column="alarmrule_id"/>
        </set>               
    </class>

    <class name="db.Alarmrule" table="alarmrule" catalog="rw">
      <set name="hosts" table="hostalarmrule" inverse="true">
            <key column="alarmrule_id"/>
            <many-to-many class="db.Host" column="host_id"/>
        </set>
    </class>

 

 

cascade的含义

1.cascade=”none”,默认值,告诉Hibernate忽略关系。
2.cascade=”save-update”告诉Hibernate在下面这些情况导航关联:当事务提交时,当对象传给save()或update()方法并保存新初始化的瞬时实例及把更改持久到分离实例时。
3. cascade=”delete”告诉Hibernate当对象传给delete()时导航关联并删除持久实例。
4.cascade=”all”意思是save-update和delete都级联,就像调用evict和lock。
5.cascade=”all-delete-orphan”,跟cascade=”all”一样,但是除此之外,Hibernate 删除任何已经从关联(例如,从集合)删除(不再被引用)的持久实体实例。
6.cascade=”delete-orphan”,Hibernate 将会删除任何已经从关联(例如,从集合)删除(不再被引用)的持久实体实例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值