【极客营】Hibernate完成CRM的联系人的保存操作-技术分析之级联的取值

作者:何征天

课程视频地址:https://ke.qq.com/course/273907

1.1.   技术分析之级联的取值(cascade的取值)和孤儿删除(在一对多的环境下才有)

需要大家掌握的取值如下
    * none             -- 不使用级联
    * save-update -- 级联保存或更新

    * delete            -- 级联删除
    * delete-orphan         --孤儿删除.(注意:只能应用在一对多关系)
    * all              --除了delete-orphan的所有情况.(包含save-update delete)
    * all-delete-orphan      -- 包含了delete-orphan的所有情况.(包含save-update delete delete-orphan)
    
  2. 孤儿删除(孤子删除),只有在一对多的环境下才有孤儿删除
    * 在一对多的关系中,可以将一的一方认为是父方.将多的一方认为是子方.孤儿删除:在解除了父子关系的时候.将子方记录就直接删除。
    * <setname="linkmans" cascade="delete-orphan">

1.2.1.  孤儿删除示例

1.修改Linkman.hbm.xml和Customer.hbm.xml

Linkman.hbm.xml

<many-to-one  name="Customer" class="com.igeek.demo1.Customer" column="lkm_cust_id"></many-to-one>

Customer.hbm.xml

<set name="linkmans" cascade="delete-orphan">

           <key column="lkm_cust_id"></key>

           <one-to-many class="com.igeek.demo1.Linkman"/>

       </set>

2.在TestOne2Many类中添加测试方法

//孤儿删除

    @Test

    publicvoid run6(){

       Session session = HibernateUtils.getCurrentSession();

       Transaction tr = session.beginTransaction();

       //获取一个客户,这个客户下有2个联系人,ID 为11,和12

       Customer c = session.get(Customer.class, 8L);

      

       //获取一个联系人

       Linkman m = session.get(Linkman.class, 11L);

      

       //联系与客户解除关系

       c.getLinkmans().remove(m);

      

       tr.commit();

    }

3.测试

Hibernate级联开发配置, cascade常用的取值:

Ø  save-update:对关联瞬时对象执行save操作,对关联托管对象执行update

Ø  delete:对关联对象进行删除

总结:

一般在业务开发中,不要两端都配置级联,(多方尽量不要配置级联,尽量在一方配置级联)。

 




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值