Jun's note

[JPA] 영속성 전이(CASCADE)와 고아 객체 본문

Programming/JPA

[JPA] 영속성 전이(CASCADE)와 고아 객체

junning 2022. 1. 23. 19:39
728x90

먼저 영속성 전이에 대해 정리할것이다.

영속성 전이는 프록시나 지연로딩과 관련 없는 내용이다. (연관관계랑 관련 x) 

이 점을 주의해야한다!

 

1. 영속성 전이(CASCADE)

부모 엔티티를 저장할때 자식 엔티티도 저장되도록 (부모를 기준으로 개발)

  • 목적 : 개발의 편리함 때문
  • 부모와 자식은 상속관계는 x
  • 예를 들어, Member엔티티안에 Team도 있다면, Member객체를 저장할때 Team도 자동 저장되도록
  • 엔티티를 영속화할 때 연관된 엔티티도 함께 영속화하는 편리함을 제공  (주의!!!)
  • 사용 방법: cascade 사용
    • @OneToMany(mappedBy="parent", cascade=CascadeType.ALL)
  • 주의사항
    • 부모랑 자식의 라이프스타일이 비슷할 경우에 사용(둘다 수정한다던지, 둘다 삭제한다던지)
    • child랑 관련된 엔티티가 부모뿐일 경우에 사용(단일소유자)

 

2. 고아객체

연관관계가 끊어진 엔티티

  • 연관관계가 끊어진 엔티티(고아객체)를 삭제해줘야한다. -> 자동 삭제됨
  •  사용 방법: orphanRemovel=true 속성

 

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

부모 엔티티를 통해 자식의 생명주기를 관리할 수 있음

영속성 전이 + 고아 객체 생명주기를 같이 다룰 수 있다.

why? 부모 객체만 삭제해도 그 안에 있는 자식 목록들도 자동 삭제되니, 부모엔티티만으로 자식 생명주기를 관리할 수 있음

Comments