JPA에서는 영속성 전이(CASCADE)라는 개념을 지원해줍니다.
그럼 과연 영속성전이(CASCADE)란? 무엇인가요?
해석하자면 대상 엔티티에 대해 수행하는 작업들이 관련 엔티티에서도 작업이 적용된다는 것이다.
JPA에서는 영속성 전이 타입 5가지를 지원해줍니다.
- ALL
- 상위엔티티에서 하위 엔티티로 모든 작업을 전파합니다. ( 모든 Cascade를 적용 )
- PERSIST
- 하위 엔티티까지 영속성을 전달합니다. ( 엔티티를 영속화할 때, 연관된 엔티티도 함께 유지 )
- MERGE
- 엔티티 상태를 병합할 때, 연관된 엔티티도 모두 병합
- REMOVE
- 연결된 하위 엔티티까지 제거함
- REFRESH
- 연결된 하위 엔티티까지 인스턴스 값 새로고침 ( 데이터베이스로부터 인스턴스 값 다시 읽어오기 )
- DETACH
- 영속성 컨텍스트에서 엔티티를 제거함 ( 연결된 하위 엔티티까지 영속성 제거 )
하이버네이트에서는 3가지의 영속성전이 타입을 지원해줍니다.
- REPLICATE
- 데이터를 동기화 할 때 사용하며, 부모 엔티티에서 수행하면 자식 엔티티에도 전파됩니다.
- SAVE_UPDATE
- save, update 및 save or update 와 같은 hibernate 특정 작업을 사용할 때 유용합니다.
- LOCK
- 엔티티 및 연관된 엔티티를 영속성 컨텍스트에 다시 올립니다.
참고 레퍼런스
'스프링 > JPA' 카테고리의 다른 글
지피지기 백전불태(부제 : JPA의 오해와 사실) (0) | 2024.10.20 |
---|---|
JPA 데이터베이스 초기화 전략 (5가지 ) (0) | 2023.03.22 |
@Transactional 복습 그리고 더 나아가기 (readOnly) (0) | 2023.03.11 |
count 그리고 성능과 서브쿼리(SubQuery) (1) | 2023.02.15 |
만약 대량의 데이터를 지워야 할 일이 있다면??? (JPA) (0) | 2023.01.14 |