zoukankan      html  css  js  c++  java
  • hibernate 之 cascade 和 inverse

    一. Cascade 级联:

    • many-to-one 中使用cascade:
    1. none : 不使用级联  (默认)
    2. save-update :当保存和更新的级联操作并关联对象 (推荐)
      <many-to-one name="teacher" column="tid" cascade="save-update"/>

      当保存多的一端数据时,发现多的一端数据所关联的一的一端的数据没有保存时,如果设置了cascade=save-update,那么会先保存一的一端,再保存多的一端。

    3. delete: 级联删除关联对象 (不推荐)

      当cascade=delete时,删除多的一端的数据时,会级联删除一的一端的数据。如果一的一端数据没有被其他引用时可以删除,如果被其他数据引用,那么删除将会失败,所以many-to-one 不建议使用 cascade=delete。

    4. all: 当执行cud时候都会级联操作关联对象。
    • one-to-many中使用cascade:
    1. none:不使用级联 (默认)
    2. save-update当保存和更新的级联级联操作对象  (不推荐)
      <set name="students" cascade="save-update">
                  <key column="tid"></key>
                  <one-to-many class="cn.sxt.vo.Student"/>
              </set>

      当为一的一端设置关联对象时,保存一的一端的数据会级联保存多的一端,但是会出现N条更新语句,效率较低,所以不推荐使用。

    3. delete:级联删除关联对象 (推荐)

      当删除一的一端数据时,会级联将对的一端数据全删除。
    4. all:当执行cud时都会级联操作关联对象。

    二. inverse:反转,用来控制在关联映射中,有集合时,由哪一端来控制(管理)关系(外键)。Inverse=true 表示由另外一端来控制关系,inverse=false表示由当前端来控制关系。在多的一端只要设置了关联关系,那么默认多的一端就会管理关系。

  • 相关阅读:
    程序、进程、线程区别与联系
    SQL常用知识与必须掌握的面试常问SQL语句
    快速搭建一个基于react的项目
    原生js判断设备类型
    在vue项目中设置BASE_URL
    纯前端实现数据导出excel文件
    原生js实现拖拽功能
    使用Echarts实现折线图的一点总结
    在vue项目中显示实时时间(年月日时分秒)
    在vue项目中使用MD5.js
  • 原文地址:https://www.cnblogs.com/forever2h/p/6738848.html
Copyright © 2011-2022 走看看