Hibernate的inverse和cascade详解
程序员文章站
2022-04-15 23:09:46
...
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是两个概念,不能同日而语!。