- Hibernate 教程
- Hibernate - 首頁
- ORM - 概述
- Hibernate - 概述
- Hibernate - 架構
- Hibernate - 環境
- Hibernate - 配置
- Hibernate - 會話
- Hibernate - 持久類
- Hibernate - 對映檔案
- Hibernate - 對映型別
- Hibernate - 示例
- Hibernate - 物件關係對映
- Hibernate - 級聯型別
- Hibernate - 註解
- Hibernate - 查詢語言
- Hibernate - Criteria 查詢
- Hibernate - 原生 SQL
- Hibernate - 快取
- Hibernate - 實體生命週期
- Hibernate - 批次處理
- Hibernate - 攔截器
- Hibernate - ID 生成器
- Hibernate - 儲存圖片
- Hibernate - log4j 整合
- Hibernate - Spring 整合
- Hibernate - Struts 2 整合
- Hibernate - Web 應用
- 對映表示例
- Hibernate - 基於層次結構的表
- Hibernate - 基於具體類的表
- Hibernate - 基於子類的表
- Hibernate 有用資源
- Hibernate - 問答
- Hibernate - 快速指南
- Hibernate - 有用資源
- Hibernate - 討論
Hibernate - 級聯型別
在hbm檔案中配置集合時,在對映一對多、多對多對映時,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>
...
級聯型別也可以在註解中提到,如下所示
@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實體時,所有關聯的Order實體也將被持久化、更新或刪除。
Hibernate中的不同級聯型別
Hibernate提供了幾種級聯選項型別,可用於管理實體之間的關係。以下是Hibernate中的不同級聯型別
CascadeType.ALL − Hibernate中的級聯型別,指定所有狀態轉換(建立、更新、刪除和重新整理)都應從父實體級聯到子實體。
CascadeType.PERSIST − Hibernate中的級聯型別,指定建立(或持久化)操作應從父實體級聯到子實體。
CascadeType.MERGE − Hibernate中的級聯型別,指定更新(或合併)操作應從父實體級聯到子實體。
CascadeType.REMOVE − Hibernate中的級聯型別,指定刪除操作應從父實體級聯到子實體。
CascadeType.REFRESH − Hibernate中的級聯型別,指定重新整理操作應從父實體級聯到子實體。
CascadeType.DETACH − Hibernate中的級聯型別,指定分離操作應從父實體級聯到子實體。
CascadeType.REPLICATE − Hibernate中的級聯型別,指定複製操作應從父實體級聯到子實體。
CascadeType.SAVE_UPDATE − Hibernate中的級聯型別,指定儲存或更新操作應從父實體級聯到子實體。
這些級聯型別可以單獨使用或組合使用,以根據應用程式的要求管理實體之間的關係。務必謹慎使用級聯型別,因為如果使用不當,可能會導致意想不到的後果。
廣告