DevBoi

[JPA] 영속성 전이 본문

Develop/[JPA]

[JPA] 영속성 전이

HiSmith 2022. 3. 7. 19:59
반응형

영속성 관련되서, Parent와 child를 persist할때

1:N 관계여도, parent와 child를 다 persist해줘야 한다.

예를 들어, 해당 과 같은 소스에서 차일드가 2개이고, 부모가 한개인 경우에는

총 3번의 persist를 해줘야 쿼리가 3개 다 나간다.

 

한번 persist를 빼보자

 

 

add를 해도, parent만 저장이된다.

이런 케이스때는 일일히 결국 persist를 해줘야 할까?

아니다. 영속성 전이를 이용하면 편하다

 

동일 소스 여도, 영속성 전이가 되어서 insert가 3개 다 나가는 것을 볼수있다.

 

-라이프사이클이 유사할때,(등록,삭제)

-소유자가 하나일때, child를 가지는게 parent하나일때, 

위 두가지일때 쓰는것이 좋다. 

 

고아 객체

부모엔티티와 연관관계가 끊어진 자식 엔티티 자동으로 삭제한다.

orphanRemoval = true로 주면, parent collection에서 자식 객체가 삭제되면, 해당 데이터가 삭제된다.

해당 같이, 제거를 하면, delete 쿼리가 remove 시점에 발생한다.

Parent가 삭제되면, 해당 하위에 딸린 자식들도 다 삭제되는 쿼리가 나가기도한다.

 

특정 엔티티가 개인 소유이거나, 연관관계가 하나일때, 즉 한객체를 한개만 참조하고있을때만 사용하는 것이 좋다.

해당 cascade가 all인경우에도 동일하게 부모가 지워지면 자식도 다 지워진다.

 

cascade와 orphan으로 고아객체를 전부 관리하면, 부모와 자식의 엔티티의 생명주기가 같게되는 효과를 가진다.

 

 

반응형

'Develop > [JPA]' 카테고리의 다른 글

[JPA] JPQL 공부 시작하기전에...  (0) 2022.03.10
[JPA] 값 타입  (0) 2022.03.10
[JPA] 지연로딩과 즉시로딩  (0) 2022.03.07
[JPA] 프록시객체에 대한 이해  (0) 2022.02.17
[JPA] 매핑 정보 상속 관련 공부  (0) 2022.01.18