论坛首页 入门技术论坛

Hibernate的inverse和cascade详解

浏览 1963 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-07-21  
one-to-many的话,最好设置inverse="true"
many-to-many的话,把其中一端设置为inverse="true"

两个类custom和orders,其中custom是one方的,orders是many方的.inverse是one-to-many方set的一个属性.如果inverse为false,当many-to-one方有变动则,one-to-many方也会相应的进行一次变动;若为true,那many-to-one方有变化时,one-to-many方不变.
当inverse为false时,如果orders被更新了,那连动的custom方也会对其关联的orders进行变动,相当于对同一个或一组orders表进行两次操作(效果是相同的),如果为true,那orders有变动,则custome不会对其关联的orders进行连动操作。这样同样效果的数据库操作就只做一次,提高了数据库使用效率。

 在hbm影射文件中set中inverse是设置控制方,false是控制方,true反之;一般在一对多的情况下我们会使用双向一对多,就是由多的一方控制,就是楼上说的:one-to-many的话,最好设置inverse="true",双向一对多的好处就是在hibernate只用执行一个sql...
cascade是设置级联方式的,有4个选项none/all/save-update/delete,
none:是没有级联;all:是所有的操作都级联;save-update:是在进行save和update的时候级联,delete:就是在delete的时候级联,
inverse和cascade是两个概念,不能同日而语!。
   发表时间:2008-11-23  
可以
这个我也知道
今天我又复习了一遍
0 请登录后投票
   发表时间:2009-04-02  
说的蛮清楚的
0 请登录后投票
论坛首页 入门技术版

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