inverse和cascade的区别

xiaoxiao2024-05-08  23

1.inverse属性:inverse所描述的是对象之间关联关系的维护方式。   inverse只存在于集合标记的元素中。Hibernate提供的集合元素包括<set/> <map/> <list/> <array /> <bag />   Inverse属性的作用是:是否将对集合对象的修改反映到数据库中。   inverse属性的默认值为false,表示对集合对象的修改会被反映到数据库中   inverse=”true”  表示对集合对象的修改不会被反映到数据库中。

 

2.cascade属性 cascade属性的作用是描述关联对象进行操作时的级联特性。因此,只有涉及到关系的元素才有cascade属性。 具有cascade属性的标记包括<many-to-one /> <one-to-one /> <any /> <set /><bag /> <idbag /> <list /> <array /> 注意:<ont-to-many /> <many-to-many />是用在集合标记内部的,所以是不需要cascade属性的。 级联操作:指当主控方执行某项操作时,是否要对被关联方也执行相同的操作。 3.inversecascade的区别 作用的范围不同:      Inverse是设置在集合元素中的。    Cascade对于所有涉及到关联的元素都有效。    <many-to-one/><ont-to-many/>没有inverse属性,但有cascade属性 执行的策略不同    Inverse 会首先判断集合的变化情况,然后针对变化执行相应的处理。    Cascade 是直接对集合中每个元素执行相应的处理 执行的时机不同      Inverse是在执行SQL语句之前判断是否要执行该SQL语句      Cascade则在主控方发生操作时用来判断是否要进行级联操作 执行的目标不同      Inverse对于<ont-to-many><many-to-many>处理方式不相同。    对于<ont-to-many>inverse所处理的是对被关联表进行修改操作。    对于<many-to-many>inverse所处理的则是中间关联表      Cascade不会区分这两种关系的差别,所做的操作都是针对被关联的对象。 总结: <one-to-many>中,建议inverse=”true”,由“many”方来进行关联关系的维护 <many-to-many>中,只设置其中一方inverse=”false”,或双方都不设置 Cascade,通常情况下都不会使用。特别是删除,一定要慎重。

转载请注明原文地址: https://www.6miu.com/read-5015228.html

最新回复(0)