精华帖 (1) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-09
JPA 规范中没有orphan的含义,不知道其它jpa实现是如果如何处理的
|
|
返回顶楼 | |
发表时间: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的话不进行对多的物理删除。 |
|
返回顶楼 | |
发表时间:2009-06-11
再次看楼主的贴。
|
|
返回顶楼 | |
发表时间:2009-06-13
更上一层楼!
|
|
返回顶楼 | |
发表时间:2009-09-17
支持楼主,在来点Lazy 的吧,文档看的很累人的
|
|
返回顶楼 | |