Hibernate<五> 级联和关系维护

一、Hibernate中的级联操做:数据库

在Hibernate中,针对持久化实体的配置文件中有Cascade这样一个属性,就是级联,也就是说在操做当前实体时,针对当前实体的操做会影响到相应配置的关联实体,好比针对当前实体进行保存操做时,会同时保存于其关联的实体。经常使用的cascade:对象

none,all,save-update,delete,lock,refresh,evict,replicate,persist,merge,delete-orphan(one-to-many)。配置

通常状况下,many-to-one,many-to-many不设置级联,在<one-to-one>和<one-to-many>中设置级联。date

①、在一对一关联关系中,当删除当前实体时,会同时级联删除关联实体,以解除二者的关联关系。配置文件

②、在一对多关联关系中,当删除一方实体时,会同时级联删除多方实体,以解除二者的关联关系。数据

③、在多对多关联关系中,根据咱们对于多对多关联关系的不一样处理状况,相应的级联删除行为会有所不一样,若是将多对多的关联关系处理为两个一对多的关联关系时,也就是说存在一个中间实体用以代表二者的多对多关联关系,那么在删除其中一方实体时,相应的级联删除操做并不会直接删除中间实体,也就是二者的关联关系,而是在中间实体中将其中一方设置为null,这样二者的关联关系就相应的移除了。若是咱们将多对多关联关系不做特殊处理,将之当作纯粹的多对多关联关系,也就是说没有相应的中间实体,而只是在数据库中保持一个中间表来维护二者的关系,那么当咱们删除一方实体时,会相应的将数据库中的中间表的相应数据给直接删除。集合

二、Hibernate中的inverse文件

inverse经常使用于一对多双向关联和多对多关联关系中,inverse的含义是,是否放弃维护关联关系,在onet-to-many和many-tomany的集合定义中使用,inverse="true"表示该对象不维护关联关系。该属性在有序集合中(list,array)一般设置为false。onet-to-many维护关联关系就是更新外键,many-to-many维护关联关系就是在中间表增减记录。vi

注意;①、inverse只存在于集合中。cas

         ②、Hibernate不容许多的一端放弃维护关系。

相关文章
相关标签/搜索