Cascade là gì?

Cascade là một khả năng giúp làm chủ trạng thái của những đối tượng người tiêu dùng vào một quan hệ một biện pháp auto.

Bạn đang xem: Cascade là gì

Ví dụ ta gồm quan hệ thân bảng company với bảng employee nhỏng sau:

*

Mối tình dục thân company với employee là 1-n (một company chứa được nhiều employee).

Lúc xóa hoặc update id của một row vào table company sẽ có được các ngôi trường đúng theo sau:

Trường đúng theo 1: chưa xuất hiện employee nào ttê mê chiếu cho tới company đó (company đó chưa xuất hiện employee nào) -> xóa / update bình thường.Trường vừa lòng 2: đã tất cả employee ttê mê chiếu cho tới company kia (company này đã có employee):2.1: Mặc định vẫn không tồn tại sửa, update vày nó vẫn tác động tới những employee vẫn tsi chiếu tới. (ON UPDATE/DELETE = NO ACTION, RESTRICT)2.2: mix company_id của các employee sẽ tham chiếu cho tới bởi null (ON UPDATE/ON DELETE = SET NULL) (Tạm phát âm là cửa hàng bị xóa, thay đổi thì những nhân viên cấp dưới sẽ không thuộc chủ thể như thế nào cả)2.3: mix company_id của các employee bởi id của company sau thời điểm update (mang lại ngôi trường đúng theo update) . Và xóa toàn bộ những employee bao gồm company_id tham chiếu cho tới company bị xóa (ON UPDATE/ON DELETE = CASCADE)

Cascade chính là khả năng vào ngôi trường vừa lòng 2.3. lúc một phiên bản ghi thay đổi thì nó đã tự động update các bản ghi đang tham mê chiếu tới nó.

lúc làm sao đề xuất thực hiện cascade

Lưu ý rằng bao gồm câu hỏi tự động update các phiên bản ghi đã tđê mê chiếu tới làm cho hiệu năng bị sụt giảm cho nên tùy ngôi trường hòa hợp cơ mà ta áp dụng nó.

Ví dụ theo xúc tích thường thì, Lúc xóa 1 company thì ta vẫn xóa toàn bộ các employee sẽ tham chiếu cho tới nó trước rồi sau đấy new xóa company đó chứ không hề tiến hành xóa company trước rồi thực hiện cascade nhằm xóa những employee đang tsay đắm chiếu cho tới.

Ta sẽ thực hiện cascade trong số trường vừa lòng tài liệu tham chiếu không nhiều, những dữ liệu tmê mệt chiếu chỉ gồm ý nghĩa Khi gắn liền cùng với đối tượng người sử dụng tham mê chiếu.

Xem thêm: Kingbach Là Ai - King Bach — Wikipédia

Ví dụ một bạn có tương đối nhiều tên (những tên đó chỉ đính với những người đó), thì lúc xóa người đó đi thì ta vẫn xóa luôn các tên kia (vị giả dụ bảo quản nó vẫn không tồn tại công dụng gì cả) -> trường hòa hợp này sử dụng cascade.

Sử dụng cascade trong Hibernate, JPA

Trong JPA: ta đã triển khai cấu hình cascade trong annotation
OneToMany(fetch = FetchType.LAZY, mappedBy = "company", cascade = CascadeType.PERSIST,CascadeType.REMOVE) private Set listEmployee = new HashSet(); //... }Trong Hibernate: ta vẫn cấu hình bởi annotation
Cascade(value= org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE) private Set listEmployee = new HashSet(); //... }Nếu ý muốn dùng cascade vào toàn bộ các ngôi trường thích hợp, update, delete… ta có thể cần sử dụng CascadeType.ALL

Các loại Cascade

Các nhiều loại cascade vào JPA (lúc sử dụng cùng với EntityManagerFactory/EntityManager)

CascadeMôt tả
ALLTương ứng với toàn bộ những một số loại cascade. cascade=DETACH, MERGE, PERSIST, REFRESH, REMOVE
DETACHNếu đối tượng người tiêu dùng phụ thân bị detached khỏi persistence context thì những đối tượng người sử dụng tmê say chiếu tới nó cũng trở thành detached.
MERGENếu đối tượng người dùng phụ vương được merged vào persistence context, thì những đối tượng người tiêu dùng tham chiếu tới nó cũng khá được merged.
PERSISTNếu đối tượng người tiêu dùng phụ thân được persisted vào persistence context, thì những đối tượng người tiêu dùng tham mê chiếu tới nó cũng được persisted.
REFRESHNếu đối tượng người sử dụng thân phụ được refreshed làm việc persistence context bây giờ, thì những đối tượng người dùng ttê mê chiếu tới nó cũng khá được refreshed.
REMOVENếu đối tượng người tiêu dùng thân phụ bị removed khỏi persistence context, thì những đối tượng người tiêu dùng tmê say chiếu cho tới nó cũng rất được removed.

Các các loại cascade vào Hibernate (lúc áp dụng với SessionFactory/Session)

CascadeMô tả
ALLTương ứng với save sầu, delete, update, evict, loông xã, replicate, merge, persist
DELETE
DELETE_ORPHANTương ứng với delete + delete orphans
EVICT
LOCK
MERGE
NONE
PERSIST
REFRESH
REPLICATE
UPDATE

Trong số đó 2 nhiều loại cascadeType là DELETE_ORPHANCE với EVICT đã hết được áp dụng.

Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *