hibernate中inverse和cascade的区别

cascade用于级联操作当前对象关联的对象

inverse="false"用于在操作当前对象时,将与其关联对象的关联关系见起来。

在多对多关系中的直白说法就是:

cascade用于在保存a时,将b也相应保存了

inverse用于在保存a时,将中间表的对应关系也维护了。

比如:student 跟 teacher是多对多的关系,他们的关心中间表为stu_teacher

那么在student的配置文件中做如下配置的话

  1. <bag name="teachers" table="stu_teach" cascade="all" inverse="false"> 
  2.     <key column="stuID" /> 
  3.     <many-to-many class="com.test.Teacher" 
  4.         column="teahID" /> 
  5. </bag>       

表示,cascade保证了在修改删除Students实体时,也会相应的级联操作Teacher,比如新增了一个Student,并新增一个Teacher对象,将其设置为Student的teah属性上。那么在保存Student对象时,Teacher对象也会被保存到数据中。但中间表的关系并没有值。只有inverse="false"这句,会促使在保存Student时,将中间表的关系也维护起来。

cascade尽量只用在one-to-one或者one-to-many的映射关系里,详细原因可查看hibernate reference guide中“传播性持久化(transitive persistence)”中的讲解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章