[3] JPA 프로그래밍 (10) - 영속성 전이(CASCADE) / 고아 객체(orphanRemoval)

김정욱·2021년 3월 14일
0

[3] JPA 프로그래밍

목록 보기
10/15
post-thumbnail

영속성 전이 ?

[ 설명 ]

  • 연관관계가 있는 엔티티간 영속성을 전이시키는 것
  • Parentem.persist()하면 Child에 대한 em.persist()도 자동으로 수행
  • 연관관계 매핑과는 상관이 없음
    --> 연관된 엔티티를 함께 영속화 하는 편리함을 제공할 뿐!
  • 종류
    • ALL : 모든 옵션
    • PERSIST : 영속성
    • REMOVE : 삭제
    • 기타(MERGE / REFRESH / DETACH)

[ 사용 ]

  • 연관관계 매핑시 포함을 하는 주체인 엔티티cascade옵션 추가

고아 객체 ?

[ 설명 ]

  • 부모 엔티티와 연관관계가 끊어진 자식 엔티티자동 삭제
  • orphanRemoval 옵션으로 사용
  • DELETE query가 수행됨
  • @OneToOne / @OneToMany 에서만 가능
  • 부모 객체를 제거하면 자식 객체는 자동으로 제거된다
    --> CascadeType.REMOVE 처럼 동작!
  • 주의
    • 참조가 제거된 엔티티는 다른 곳에서 참조하지 않는 고아 객체로 보고 삭제됨
    • 참조하는 곳하나일 때 사용해야함
      --> 여러 곳에서 참조하는 경우 로직이 꼬일 수 있음
    • 특정 엔티티가 개인 소유할 때 사용
      --> 특정 하나의 엔티티가 소유한 관계에서 사용

[ 사용 ]

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

  • CascadeType.ALL + orphanRemoval=true
    : 부모 엔티티자식 엔티티생명주기를 관리한다는 것을 의미함
  • 도메인 주도 설계(DDD)Aggregate Root개념을 구현할 때 유용
profile
Developer & PhotoGrapher

0개의 댓글