什么是Hibernate中的级联?

时间:2013-06-13 12:33:30

标签: java hibernate java-ee

Hibernate中的级联是什么?我在cascade标记中看到了map属性。它的意思是什么?

cascade = all的含义相同?我读到的其他属性如同 cascade="none|save-update|delete|all-delete-orphan|delete-orphan"

2 个答案:

答案 0 :(得分:16)

级联是关于一个对象通过关联传播到其他对象的持久性操作。级联可以应用于各种Hibernate操作,并且通常是可传递的。定义关联的注释的“cascade = ...”属性表示应该为该关联级联哪些操作。

Cascade =“all”表示应用所有主级联类型。从Hibernate 5.3开始,这些类型是:

  • “删除”/“删除”,
  • “detach”/“evict”,
  • “merge”,
  • “锁定”,
  • “坚持”,
  • “刷新”,
  • “复制”,
  • “save_update”/“update”

(其中一些级联类型名称已旧和/或已弃用。)

还有三种化合物类型:

  • “all_delete_orphan” - 表示与“all”相同,并且可以删除由级联孤立的实体。
  • “delete_orphan” - 表示“删除”加上孤儿删除。
  • “none” - 表示没有级联。

答案 1 :(得分:5)

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

在Hibernate中级联有许多选项,如保存更新,保持,合并,删除等.Cascade ='all'是一种应用所有级联选项的方法。