Hibernate inverse

inverse 标示是否放弃对java对象关系的维护:inverse= true 就是放弃维护,false就是不放弃维护,

inverse=true在那个xml文件里面就表示谁放弃对关系的维护(一般是一的那一方放弃,多的一方维护)

比如,Employee(E)  和 Department (D)对象(二者是多个Employee  对一个Department 的关系), 都使用了D.setE() ,和E.setD()

session.save(E)  session.save(D)

如果在D的xml文件文件set项里面inverse是true,就标示D不再负责管理D了,即使使用了D.setE()的方法,还是不会因为这行代码产生sql语句,可是如果E.setD(),那么就会因为这个方法产生sql了(不过具体还要看java对象的是什么状态).

如果D的xml文件文件set项里面inverse是false,,就标示D要负责管理D了,使用了D.setE()的方法,就会因为这行代码产生sql语句,而且如果E.setD(),那么也就会因为这个方法产生sql了.就是比上面多产生(一个或者)几个update了

总之inverse跟强调的对象间关系的维护.(hibernate的inverse缺省是false)

在有序集合如List和数组里面是不容许配inverse=true的.因为如果一放弃对多的关系的维护,那么对他们顺序的维护自然也是不管的.

在many -to -one 里面也是不可以配inverse= true的,那样hibernate效率会很低的.

个人理解的,表达能力有限,也许有错,可是怕忘记了还是的记一下.(错了就告诉我一下)

相关推荐