본문 바로가기

웹 프로그래밍/JPA

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

영속성 전이(CASCADE)

-특정 엔티티를 영속상태로 만들때 연관된 엔티티도 함께 영속 상태로 만들고 싶을때

-(e.g. 부모 엔티티 저장할때 자식도 함께 저장)

-@OneToMany(mappedBy="parent", cascade=CascadeType.ALL)

-부모를 persist할때 어노테이션 붙은 컬렉션등도 함께 persist(연쇄 반응)

 

주의

-연관관계 매핑하는것과 아무 상관이없음

-연관된 엔티티도 함께 영속화하는것임

-부모와 자식의 라이프 사이클이 동일하고 단일 엔티티에 종속적일때만 사용

 

고아 객체

-@OneToMany(mappedBy="parent", cascade=CascadeType.ALL, orphanRemoval = true)

-고아 객체 삭제: 부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능

-참조하는 곳이 하나일때 사용 해야함

-특정 엔티티가 개인 소유할때 사용

-부모를 제거하면 자식은 고아가 되고, orphanRemoval = true 이면 자식도 함께 제거됨

 

생명주기

-cascade=CascadeType.ALL + orphanRemoval = true

-부모는 본인이 능동적으로 생명주기를 관리하지만 자식은 부모에 의해서 수동적으로 생명주기가 관리됨(동기) 

'웹 프로그래밍 > JPA' 카테고리의 다른 글

객체 지향 쿼리 언어_기본  (0) 2023.03.07
기본값 타입, 임베디드 타입  (0) 2023.03.06
즉시로딩과 지연로딩  (0) 2023.03.04
프록시  (1) 2023.03.04
고급 매핑  (0) 2023.03.04