JPA

[JPA] cascade 옵션 & 고아 객체

yerimkoko 2022. 5. 16. 20:04
728x90

출처: 자바 ORM 표준 JPA 프로그래밍 (김영한 저)

영속성 전이 cascade

  • 객체를 저장하거나 삭제할 때 연관된 객체도 함께 저장하거나 삭제할 수 있는 것.
  • JPA에서 엔티티를 저장할 때 연관된 모든 엔티티는 영속 상태이어야 한다.

cascade는 그럼 언제 써야 할까?

  1. Life Cicle이 일치 할 때
  2. 단일 엔티티에 종속적일 때

ex) 부모 엔티티를 저장할 때 자식 엔티티도 함께 저장해야 할 때 사용한다.

cascade는 연관관계와는 연관이 없다.


CASCADE의 종류

ALL: 모두 적용

PERSIST: 영속

       부모와 자식 엔티티를 한 번에 영속화 가능

REMOVE: 삭제

       부모 엔티티를 삭제하면 연관된 자식 엔티티도 함께 삭제.

MERGE: 병합

 

=> 보통 cascade = CascadeType.ALL을 사용한다.


고아 객체

  • jpa는 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는데 이것을 고아 객체 제거라고 한다.
  • 부모를 제거하면 자식은 고아가 된다.
  • orphanRemoval = true를 하게 되면 고아 객체 제거 기능이 활성화 된다.

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

CascadeType.ALL + orphanRemoval = true를 동시에 사용하게 되면

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

'JPA' 카테고리의 다른 글

[JPA] 객체 지향 쿼리 언어, JPA와 JDBC 같이 사용  (0) 2022.05.19