JPA

영속성전이와 고아객체

yanu 2023. 2. 20. 22:10

 

 

1. 영속성 전이

  • CASECADE
  • 특정엔티티를 영속 상태로 만들 때, 연관 된 엔티티도 영속상태로 하고 싶을 때
  • 부모 엔티티를 저장할 때, 자식 엔티티까지 저장
  • 매핑하는 것과는 상관없음, 영속화하는 편리함을 제공하는 것
  • 옵션 : ALL, PERSIST, REMOVE
  • @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL)
    private List<Child> childList = new ArrayList<>();
  • 참조하는 곳이 하나인 경우에만 (소유자(부모엔티티)가 하나일 경우에만 사용)

 

 

 

2. 고아객체

  • 부모 엔티티와 연관관계가 끊어진 자식엔티티를 자동으로 삭제
  • @OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Child> childList = new ArrayList<>();
  • orphanRemoval 을 사용시 list에서 remove하는 경우 delete 쿼리가 나가게 된다.
  • 참조하는 곳이 하나인 경우에만 사용, 특정 엔티티가 개인 소유할 때 사용

 

 

3. 영속성전이 + 고아객체

  • 스스로 생명주기를 관리하는 엔티티는 em.pesist()로 영속화, em.remove()로 제거
  • 두 옵션을 모두 활성화하면 부모 엔티티를 통해서 자식의 생명주기를 관리할 수 있다.
  • 도메인 주도 설계(DDD)의 Aggregate Root 개념을 구현할 때 유용

 

 

 

 

 

 

 

**참고

인프런 - 자바 ORM 표준 JPA 프로그래밍 - 기본편 - 기본편(김영한)