论坛首页 Java企业应用论坛

Hibernate中的cascade和inverse

浏览 15948 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (7)
作者 正文
   发表时间:2009-03-09  
JPA 规范中没有orphan的含义,不知道其它jpa实现是如果如何处理的
0 请登录后投票
   发表时间:2009-03-09  
tinyyea 写道
wangneng_001 写道
谢谢iranger的解释。。。

不过这样all-delete-orphan好像就跟all没什么区别了。。。


hi.

session有套api用来update和delete,在改变了对象之后调用可以看到相应的更新或者删除语句。
但是在hibernate中,你不需要显示调用session.update或者delete,在改变了对象之后,直接拿到事务commit就能发现数据库状态也被改变了。
事实上,session.update和delete只是生成一条更新或者删除语句,最终都是清理缓存时才执行
实质上,删除或者不删除与生成的SQL语句有关,处于一个session的持久对象,在经历了一些逻辑之后,有些对象可能要被删除,它们被解除了关联关系,部分对象成了孤儿,但你并没有调用session.delete方法,所以删除这些对象的SQL就没有生成,而你的cascade=all,hibernate对比缓存状态,只是把外键更新成了null,当cascade=all-delete-orphan时情况完全不同,hibernate为那些孤儿对象生成删除语句,并很果断地执行了这些语句。始终注意一个前提:你没有显示地调用session.delete方法。
当你显示地调用了session.delete方法时,cascade=all或者all-delete-orphan就确实没有区别。

任何东西显示得写出来都容易明白,JPA里就没有类似all-delete-orphan的CascadeType


分析的很透彻,其实也就是说如果是all的话不进行对多的物理删除。
0 请登录后投票
   发表时间:2009-06-11  
再次看楼主的贴。
0 请登录后投票
   发表时间:2009-06-13  
更上一层楼!
0 请登录后投票
   发表时间:2009-09-17  
支持楼主,在来点Lazy 的吧,文档看的很累人的
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics