Hibernate Cascade Types 级联类型怎么用?

文章导读
Previous Quiz Next 在 hbm 文件中配置集合时,以及在映射 one-to-many、many-to-many 关系时,hbm 文件中的集合元素(例如 list)包含一个 cascade 属性。
📋 目录
  1. A 示例
  2. B Hibernate 中的不同 Cascade 类型
A A

Hibernate - Cascade Types



Previous
Quiz
Next

在 hbm 文件中配置集合时,以及在映射 one-to-many、many-to-many 关系时,hbm 文件中的集合元素(例如 list)包含一个 cascade 属性。

示例

...
<class name="Student" table="student_tbl_100">  
   <id name="studentid">  
      <generator class="native"></generator>  
   </id>  
   <property name="name"></property>  
    
   <map name="courses" table="course_tbl_100" cascade="all">  
      <key column="id"></key>  
      <index column="course_id" type="string"></index>  
      <element column="course_name" type="string"></element>  
   </map>  
</class>
...

也可以在注解中指定 cascade 类型,如下所示:

@Entity
public class Customer {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @OneToMany(mappedBy = "customer", cascade = CascadeType.ALL)
   private Set<Order> orders = new HashSet();

   // getters and setters
}
@Entity
public class Order {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @ManyToOne
   @JoinColumn(name = "customer_id")
   private Customer customer;

   // getters and setters
}

当 Customer 实体被 persist、update 或 delete 时,所有关联的 Order 实体也会被相应地 persist、update 或 delete。

Hibernate 中的不同 Cascade 类型

Hibernate 提供了多种 cascade 选项,用于管理实体之间的关系。以下是 Hibernate 中的不同 cascade 类型:

  • CascadeType.ALL − Hibernate 中的一种 cascade 类型,指定所有状态转换(create、update、delete 和 refresh)应从父实体级联到子实体。

  • CascadeType.PERSIST − Hibernate 中的一种 cascade 类型,指定 create(或 persist)操作应从父实体级联到子实体。

  • CascadeType.MERGE − Hibernate 中的一种 cascade 类型,指定 update(或 merge)操作应从父实体级联到子实体。

  • CascadeType.REMOVE − Hibernate 中的一种 cascade 类型,指定 delete 操作应从父实体级联到子实体。

  • CascadeType.REFRESH − Hibernate 中的一种 cascade 类型,指定 refresh 操作应从父实体级联到子实体。

  • CascadeType.DETACH − Hibernate 中的一种 cascade 类型,指定 detach 操作应从父实体级联到子实体。

  • CascadeType.REPLICATE − Hibernate 中的一种 cascade 类型,指定 replicate 操作应从父实体级联到子实体。

  • CascadeType.SAVE_UPDATE − Hibernate 中的一种 cascade 类型,指定 save 或 update 操作应从父实体级联到子实体。

这些 cascade 类型可以单独使用或组合使用,根据应用程序的需求管理实体之间的关系。使用 cascade 类型时需谨慎,因为如果使用不当,可能会导致意外后果。