스프링/JPA

Cascade Type의 종류, 그리고 의도

지팡구 2023. 3. 22. 21:49

JPA에서는 영속성 전이(CASCADE)라는 개념을 지원해줍니다. 

 

그럼 과연 영속성전이(CASCADE)란? 무엇인가요? 

 

https://www.baeldung.com/jpa-cascade-types (Cascade)

해석하자면 대상 엔티티에 대해 수행하는 작업들이 관련 엔티티에서도 작업이 적용된다는 것이다.

 

JPA에서는 영속성 전이 타입 5가지를 지원해줍니다. 

  • ALL
    • 상위엔티티에서 하위 엔티티로 모든 작업을 전파합니다.  ( 모든 Cascade를 적용 )
  • PERSIST
    • 하위 엔티티까지 영속성을 전달합니다. ( 엔티티를 영속화할 때, 연관된 엔티티도 함께 유지 )
  • MERGE
    • 엔티티 상태를 병합할 때, 연관된 엔티티도 모두 병합
  • REMOVE
    • 연결된 하위 엔티티까지 제거함
  • REFRESH
    • 연결된 하위 엔티티까지 인스턴스 값 새로고침  ( 데이터베이스로부터 인스턴스 값 다시 읽어오기 )
  • DETACH
    • 영속성 컨텍스트에서 엔티티를 제거함 ( 연결된 하위 엔티티까지 영속성 제거 )

 

하이버네이트에서는 3가지의 영속성전이 타입을 지원해줍니다.

Hibernate Cascade Type

  • REPLICATE
    • 데이터를 동기화 할 때 사용하며, 부모 엔티티에서 수행하면 자식 엔티티에도 전파됩니다.
  • SAVE_UPDATE
    • save, update 및 save or update 와 같은 hibernate 특정 작업을 사용할 때 유용합니다.
  • LOCK
    • 엔티티 및 연관된 엔티티를 영속성 컨텍스트에 다시 올립니다.

참고 레퍼런스