什么是Hibernate中的级联?

30

Hibernate中的“级联”是什么?我在map标签中看到了一个cascade属性。它有什么作用?

比如,cascade = all是什么意思?我还读到了其他属性,例如
cascade="none|save-update|delete|all-delete-orphan|delete-orphan"

2个回答

24
层叠是指涉及一个对象的持续性操作通过关联传播到其他对象。层叠可以应用于各种Hibernate操作,并且通常是可传递的。定义关联的注释中的“cascade = ...”属性表示该关联应该进行哪些级联操作。
cascade = "all" 表示应用所有主要的级联类型。从Hibernate 5.3开始,这些类型包括:
- "delete" / "remove" - "detach" / "evict" - "merge" - "lock" - "persist" - "refresh" - "replicate" - "save_update" / "update"
(其中一些级联类型名称已过时或被弃用)。
此外还有三个组合类型:
- "all_delete_orphan" - 表示与“all”相同,但还启用了通过级联删除孤立实体。 - "delete_orphan" - 表示“delete”加上孤儿删除。 - "none" - 表示没有级联。

7

级联是Hibernate使用的一种传递性持久化模型。传递性持久化是一种技术,允许您自动将持久化扩散到暂态(尚未保存在数据库中的对象)和分离的子图(子对象)。例如,已经持久化的父对象的新创建的子对象应该自动变为持久状态,无需调用save()或persist()方法。

Hibernate中的级联有许多选项,如save-update、persist、merge、delete等。Cascade='all'是应用所有级联选项的一种方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接