Cascade와 Cascade Type

이수찬·2023년 4월 14일
0

1. JPA에서의 Cascade란?

Cascade는 영속성 전이이다.
영속성 전이는 특정 엔티티의 영속성을 다른 엔티티에게도 전이시킬 때 사용한다.

영속성 전이에는 여러 종류들이 있는데 하나씩 살펴보자.

2. Cascade Type

  • CascadeType.ALL : 상위 엔티티에서 하위 엔티티로 모든 작업을 전파
    => 상위 엔티티에서 일어난 모든 영속성 작업이 하위 엔티티에게 전이된다.(ex. 엔티티를 persist하려할 때, 영속성 컨텍스트에 저장하면, 하위 엔티티를 persist한다.)

  • CascadeType.PERSIST : 상위 엔티티 persist시, 하위 엔티티도 persist된다.

  • CascadeType.MERGE : 상위 엔티티를 detach 상태에서 다시 영속성 컨텍스트로 옮길 시 하위 엔티티도 변경되며, 비영속 상태에서 변경사항이 변경되며, update쿼리가 날라간다.

  • CascadeType.REMOVE : 상위 엔티티 삭제시, 하위 엔티티도 삭제된다.

  • CascadeType.REFESH : DB로부터 인스턴스 값을 다시 읽을 때, 연결된 하위 엔티티까지 값을 다시 새로고침
    (ex. 엔티티가 영속성 컨텍스트에 존재하지 않아, db에서 엔티티를 select할때, 다시 영속성 컨텍스트에 엔티티를 저장하는데, 이때, 하위 엔티티의 db에 저장된 내용과 영속성 컨텍스트에 존재하는 하위 엔티티의 값을 동기화시킨다.)

  • CascadeType.DETACH : 영속성 컨텍스트에서 상위~하위 엔티티까지 영속성 제거

0개의 댓글