cascade 和 inverse

cascade:是指级联操作,指我们操作一个表时,相应的与他关联的表也会发生相应的变化。

          它的使用一般都在一对多的情况,当然一对一或多对多时候也能用到,

 cascade 有五个选项 分别是: all ,delete ,none,save-update,delete-orphan
我们一般最常用的是:
    all : 所有情况下均进行关联操作。
  none:所有情况下均不进行关联操作。这是默认值

例:有一个父表和子表  子表有一个字段是外键要引用父表的一个字段
    这两个表就有了一种联系,当主表的一条记录被删除后,因为子表里有个子段是引用的这条记录的

    值,如果没有设置级联操作,那么就会出现那子表中的记录不会被删除,而子表中的外键还在,对于这

    种问题,就需要用到级联操作了。

inverse:它的真正作用就是指定由哪一方来维护之间的关联关系,它还有一个重要特点就是会优化Sql,

         如果不用inverse的话,sql语句会执行2次,这样性能就明显下降了。inverse的只能出现在

         一对多或多对多中,并且是出现在set集合中,一般都是set,当然也可能在list中。

         一对多就相对简单了,只需在set中设置inverse=TRUE  就是了,而多对多就比较复杂了,但是

         要用的话,只需在一方设置inverse=TRUE就可以了,不能两方都设置成TRUE,因为这样设置的话

         两边都让对方维护关系,这样是不起任何作用的。

posted @ 2009-07-21 10:49  QQ天堂  阅读(191)  评论(0编辑  收藏  举报