Spring

[Spring] 영속성 전이 (Cascade)

Paragon53 2025. 4. 17. 10:30

 

minecraft-font

Spring

 

 

🔥 Cascade

       🎯 JPA에서 특정 엔티티를 저장, 삭제 등의 작업을 할 때 연관된 엔티티에도 동일한 작업을 자동으로

            적용하도록 설정하는 기능

           (❗ 영속성 전이는 지연로딩, 즉시 로딩과는 아무 관련이 없다)

 


 

✅ why ?

   연관된 객체들은 별도로 저장, 삭제하지 않고도 하나의 작업으로 함께 처리 할 수 잇기 때문에 코드가 깔끔해지고 관리가 쉬움

   

   부모 - 자식 관계에서 부모 엔티티만 신경 써도 자식 엔티티들이 함께 관리되니 일관성이 있는 데이터 처리 가능.

 

옵션 설명
PERSIST 부모 저장 시 자식도 저장
REMOVE 부모 삭제 시 자식도 삭제
MERGE 병합(수정)시 자식도 병합
DETACH 영속성 컨텐스트에서 분리시 자식도 함께 분리
REFRESH DB로부터 다시 불러올 때 자식도 같이 불러옴
ALL 위의 모든 옵션 포함(전체 전이)

 

  •  

사용 방법

    ● 단일 Entity에 완전히 종속적인 경우 생명주기가 같다면 사용한다.

         ■ 블로그 글의 댓글처럼 항상 글을 통해서만 관리하는 경우

         ■  상품과 상품 이미지처럼 특정 상품에 종속되어 관리되는 경우

 

  ●   작가와 책

        ■  책은 특정 작가와 연관되지만 작가가 활동하지 않아도 책은 보존된다.

        ■ 이런 경우는 사용하지 않는다.

 

⚠️ 주의점

        의미 있는 부모- 자식 관계(같은 생명주기를 가지는 연관된 객체 관계)에서만 사용해야 한다. 

      ●  삭제 전이(Remove)는 예상치 못한 삭제 발생 가능성이 있다.