博客分类:

 

当关联双方存在父子关系,就可以在 set 处设定 cascade 为 all-delete-orphan

所谓父子关系,即指由父方控制子方的持久化圣明周期,子方对象必须和一个父方对象关联。如果删除父方对象,应该级联删除所有关联的子方对象;如果一个子方对象不再和一个父方对象关联,应该把这个子方对象删除。

all-deleteorphan 的能力:

1. 当保存或更新父方对象时,级联保存或更新所有关联的子方对象,相当于 cascade 为 save-update

2. 当删除父方对象时,级联删除所有关联的子方对象,相当于 cascade 为 delete

3. 删除不再和父方对象关联的所有子方对象

解除父子关系的 java 语句例如:

customer.getOrders().remove(order);

order.setCustomer(null);

tx.commit();

如果 cascade 属性取默认值 null,当解除父子关系时,会执行如下 sql:

update ORDER set CUSTOMER_ID=null where ID=2

如果要把它也删掉,则设置:

<set   name="orders"  cascade="all-delete-orphan"  inverse="true">

<key  column="CUSTOMER_ID"  />

<one-to-many  class="mypack.Order" />

再运行时就会执行:delete from ORDERS where CUSTOMER_ID=2  and ID=2;

cascade几种取值:

save-update:   级联保存(load以后如果子对象发生了更新,也会级联更新). 但它不会级联删除

delete:              级联删除, 但不具备级联保存和更新

all-delete-orphan: 在解除父子关系时,自动删除不属于父对象的子对象, 也支持级联删除和级联保存更新.

all:                     级联删除, 级联更新,但解除父子关系时不会自动删除子对象.

delete-orphan:删除所有和当前对象解除关联关系的对象

none:...

级联保存和级联更新总是集合在一起的, 所以没单独的save 或 updata

我通常会用到none,save-update,all-delete-orphan,而且还是在一对多和多对多的情况

  1. none就不用说了,在保存,更新,删除当前对象时,忽略其关联的对象
  2. save-update:在保存和更新当前对象的时候,级联保存,更新关联对象,在多对多的情况下用的很多,而且一般    不用于一对多,一对多我通常会采用none或者all-delete-orphan
  3. delete 删除当前对象,级联删除关联的对象,我从来单独没用过
  4. all 也就是save-update+delete,另外对当前对象执行evict和lock时对关联对象也执行evict和lock,我从来没单独用过
  5. delete-orphan 删除所以和当前对象解除关联的对象,我从来没单独用过
  6. all-delete-orphan 也就是all+delete-orphan,根据需求,我在一对多中经常使用

最新文章

  1. 在ubuntu 12.04 x64下编译hadoop2.4
  2. html5 svg 圆形进度条
  3. 反正切函数求圆周率 atan
  4. MySql存储引擎特性对比
  5. W: 无法下载 bzip2:/var/lib/apt/lists/partial/extras.ubuntu.com_ubuntu_dists_trusty_main_source_Sources
  6. java基本数据类型及其包装类
  7. 关于Kafka监控方案的讨论
  8. html页面打开ie浏览器默认打开最高版本
  9. docker(六) 使用docker-maven-plugin插件构建docker镜像(已过时)
  10. javascript DOM document属性
  11. 04-树5 Root of AVL Tree + AVL树操作集
  12. NOIP2006能量项链
  13. windows7安装教程(vmware)
  14. python 3.x 字典的11种方法
  15. sqljdbc.jar 和 sqljdbc4.jar
  16. python3爬虫-下载网易云音乐,评论
  17. SecureCRT远程连接Linux服务器及相关配置
  18. Python总结篇——知识大全
  19. [Flex] 组件Tree系列 —— 作为PopUpButton的弹出菜单
  20. shell脚本执行方式

热门文章

  1. cf 76 div2
  2. WLC HA模式下的注意事项
  3. ES-elasticsearch安装-linux
  4. 关于cmd的命令行参数的问题
  5. 刷题62. Unique Paths
  6. redhat 7.6 流量监控命令、软件(3)nethogs 监控进程实时流量
  7. SpringBoot与Mybatis整合,插件生成dao、mapper、pojo
  8. (踩过的坑)使用Github Page搭建个人博客
  9. PTA的Python练习题(二)
  10. icos下配置snake test