-
Cascade / orphanRemovalBackend/JPA 2025. 11. 21. 10:08
| Cascade (전파)
부모 엔티티의 상태 변화가 자식 엔티티에도 전파되는 기능이다.
@OneToMany(cascade = CascadeType.ALL) private List<OrderItem> items;옵션 의미 PERSIST 저장 전파 REMOVE 삭제 전파 MERGE 병합 전파 ALL 전체 전파
| orphanRemoval
부모와 연관 관계가 끊어진 자식 엔티티를 자동 삭제한다.구분 Cascade REMOVE orphanRemoval 동작 부모 삭제 시 자식 삭제 관계 끊기면 삭제 기준 부모 삭제 컬렉션 제거
parent.getChildren().remove(child);
orphanRemoval = true
child 자동 삭제됨연관관계 생명주기가 동일할 때만 사용
공유 엔티티에는 위험
예시) Product -Category 에 orphanRemoval 사용
상품에서 카테고리 제거 → 카테고리 DELETE됨 → 다른 상품 카테고리 다 터짐
1. Product A에서 Category 제거productA.setCategory(null);
또는category.getProducts().remove(productA);
2. orphanRemoval=true 이면 JPA 생각
Category가 Product에서 끊어졌네? → 이 Category는 삭제해야겠다.DELETE FROM category WHERE id = 1'Backend > JPA' 카테고리의 다른 글
jpa n+1 문제 (0) 2025.11.21 JPA 개념부터 실무 (Feat. 매핑, 주요 옵션, 메소드) (0) 2025.11.20