조컴퓨터

영속성 전이: CASCADE, 고아 객체 본문

공부/JPA

영속성 전이: CASCADE, 고아 객체

챠오위 2022. 2. 10. 23:18

- 특정 엔티티를 영속 상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 사용

  예) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장

 

영속성 전이: 저장

이때, 영속성 전이는 연관 관계를 매핑하는 것과 관련이 없다는 것을 주의한다.

영속성 전이는 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함만을 제공한다.

 

 

 

CASCADE 의 종류

ALL : 모두 적용

PERSIST : 영속

REMOVE : 삭제

MERGE : 병합

REFRESH : REFRESH
DETACH : DETACH

 

 

 

고아 객체

- 고아 객체 제거: 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제

- orphanRemoval = true

- 고아 객체는 참조하는 곳이 하나일 때만 사용해야 한다.

 

 

 

영속성 전이 + 고아 객체, 생명주기

- CascadeType.ALL + orphanRemovel = true

- 스스로 생명주기를 관리하는 엔티티는 em.persist() 로 영속화하고, em.remove() 로 제거한다.

- 두 옵션을 모두 활성화하는 경우에는 부모 엔티티를 통해서 자식의 생명주기를 관리할 수 있다.

 

 

 

참고)

1. 김영한 님의 '자바 ORM 표준 JPA 프로그래밍 - 기본편'에서 영속성 전이(cascade) 와 고아 객체

 

 

 

 

'공부 > JPA' 카테고리의 다른 글

BaseTimeEntity abstract class  (0) 2023.08.18
지연 로딩과 즉시 로딩  (0) 2022.02.10
양방향 매핑 시점  (0) 2022.02.08
JPQL 쿼리란  (0) 2022.02.06
[DB] 엔티티(Entity)란 무엇인가  (0) 2022.02.04