Many与One的关系中,级联策略
在Many与One的关系中,级联策略很重要,这关系着效率与完整性等问题。
在<set>、<many-to-one>、<one-to-one>元素中都有一个cascade属性,它用于指定如何操纵与当前对象关联的其他对象。
cascade有如下几个可选属性值:
none:是默认值,在保存、更新、删除当前对象时,忽略其他关联对象。
save-update:当通过Session的save()、update()和saveOrUpdate()保存或更新对象时,级联保存所有关联的新建的临时对象,并且级联更新所有关联的游离对象。
delete:当通过Session的delete()删除当前对象时,级联删除所有关联对象。
all:包含save-update和delete的行为。此外,当对当前对象执行evict()或lock()操作时,也会对所有级联的持久化对象执行evict和lock操作。
delete-orphan:删除所有和当前对象接触关联关系的对象。
all-delete_orphan:包含all和delete-orphan的行为。
evict:删除一方时 会将多方的外键设置为空