JPA 영속성 전이

김두현·2023년 4월 29일
1

JPA

목록 보기
12/14
post-thumbnail

Goal

  • 영속성(cascade) 전이에 대해 파악한다.
  • 고아 객체에 대해 파악한다.

영속성 전이

  • 특정 엔티티를 영속화 할 때, 연관 엔티티도 함께 영속화하고자 할 때 사용한다.
    영속성을 전이하지 않으면 persist()를 세 번 호출해야하지만, 영속성 전이를 통해 persist(parent)만으로 child또한 영속화할 수 있게된다.
    • cascade영속화의 편리함만을 제공할 뿐, 연관관계 매핑과 전혀 관련없다.

cascade 종류

  • ALL : 아래의 모든 변화를 전이한다.
  • PERSIST : 연관 엔티티를 영속화한다.
  • REMOVE : 연관 엔티티를 삭제한다.
  • MERGE : 준영속 상태의 연관 엔티티를 영속화한다.
  • REFRESH : 연관 엔티티를 refresh한다.
    • refresh : 1차 캐시와 DB의 상태를 동기화
  • DETACH : 연관 엔티티를 준영속 상태로 전환한다.

영속성 전이 조건

영속성 전이 설정은 매우 신중히 해야하는데, 일반적으로 아래 규칙에 유의하여 설정한다.
1. 자식 엔티티를 관리하는 부모가 단 하나만 존재한다.
즉, 연관관계가 유일할 때 사용한다.
2. 엔티티의 생명 주기가 동일할 때 사용한다.
즉, 부모가 생성될 때 자식도 생성되고, 부모가 사라지면 자식도 사라질 때 사용한다.


고아 객체

  • 고아 객체 : 부모 엔티티와 연관관계가 끊어진 자식 엔티티

  • orphanRemoval = true 설정을 통해 고아 객체를 자동으로 삭제한다.

고아 객체 조건

영속성 전이 조건과 동일하다.

  • 추가적으로, @OneToOne @OneToMany 에서만 사용 가능하다.

참고 자료

https://www.inflearn.com/course/ORM-JPA-Basic


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM

0개의 댓글