일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 코테공부
- JPA스터디
- JPA예제
- Axon framework
- nestjs
- JPA 공부
- 코테준비
- DDD
- 자바공부
- Kafka
- JPA공부
- 스프링공부
- Flutter
- 플러터 공부
- 프로그래머스
- 스프링
- 스프링부트공부
- querydsl
- 플러터 개발
- 스프링부트
- nestjs공부
- 기술공부
- 기술면접공부
- 알고리즘공부
- 스프링 공부
- 자료구조공부
- JPA
- nestjs스터디
- 카프카
- K8S
- Today
- Total
DevBoi
[JPA] 영속성 전이 본문
영속성 관련되서, 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 |