CASCADE LÀ GÌ

Cascade là gì?

Cascade là một nhân kiệt góp cai quản tinh thần của các đối tượng người dùng vào một quan hệ một giải pháp tự động hóa.

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

Ví dụ ta gồm mối quan hệ thân bảng company cùng bảng employee như sau:

*

Mối quan hệ giới tính thân company với employee là 1-n (một company đựng nhiều employee).

khi xóa hoặc update id của một row trong table company sẽ sở hữu được những ngôi trường hòa hợp sau:

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

Cascade chính là nhân tài trong trường hợp 2.3. Lúc một phiên bản ghi biến đổi thì nó đang tự động update những bạn dạng ghi đã tđắm say chiếu tới nó.

Khi làm sao cần sử dụng cascade

Lưu ý rằng chủ yếu câu hỏi auto update những bản ghi sẽ tmê mẩn chiếu tới để cho hiệu năng bị sụt giảm vì thế tùy trường hợp cơ mà ta vận dụng nó.

lấy ví dụ theo xúc tích và ngắn gọn thông thường, Lúc xóa 1 company thì ta sẽ xóa toàn bộ các employee đang tsay đắm chiếu tới nó trước rồi sau đấy bắt đầu xóa company kia chứ không cần thực hiện xóa company trước rồi thực hiện cascade để xóa các employee đang tsi chiếu cho tới.

Ta sẽ sử dụng cascade trong các trường đúng theo dữ liệu tsay mê chiếu ít, những tài liệu tđam mê chiếu chỉ gồm ý nghĩa khi nối liền cùng với đối tượng người dùng tđê mê chiếu.

Xem thêm: " Dial Up Connection Là Gì, Hỏi Cách Kết Nối Internet Qua Modem Dial

lấy ví dụ một fan có nhiều tên (những thương hiệu kia chỉ đính với những người đó), thì Lúc xóa fan đó đi thì ta đang xóa luôn các thương hiệu đó (bởi vì nếu như cất giữ nó sẽ không tồn tại tác dụng gì cả) -> trường thích hợp này cần sử dụng cascade.

Sử dụng cascade trong Hibernate, JPA

Trong JPA: ta sẽ tiến hành cấu hình cascade vào 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 hoàn toàn có thể dùng CascadeType.ALL

Các nhiều loại Cascade

Các các loại cascade vào JPA (Khi áp dụng cùng với EntityManagerFactory/EntityManager)

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

Các một số loại cascade trong Hibernate (Lúc áp dụng cùng với SessionFactory/Session)

CascadeMô tả
ALLTương ứng với save, delete, update, evict, loông chồng, 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 đã mất được áp dụng.