ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Cascade / orphanRemoval
    Backend/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
Designed by Tistory.