Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- java기본자료형
- javaJVM
- java set 저장
- 코딩부트캠프후기
- 프로그래머스제일작은수
- 인터프린터언어
- 항해99후기
- java list 저장
- java참조자료형
- java map 저장
- 격파르타장점
- 격파르타비전공자
- java map
- java map 출력
- 컴파일
- java알고리즘
- 비전공자sqld
- java set 출력
- 프로그래머스
- javaJRE
- java 자료구조 활용
- sqld자격증합격
- java list 출력
- java최솟값구하기
- 항해15기
- 격파르타후기
- 노베이스부트캠프
- 작은수제거하기
- java알고리즘문제풀이
- 격파르타합격후기
Archives
- Today
- Total
코딩과 결혼합니다
[JPA] 영속성 전이(CASCADE), 고아 객체 본문
728x90
영속성 전이
특정 엔티티를 와 함께 연관된 엔티티도 영속 상태로 만들고 싶을 때 사용한다.
@OneToMany(mappedBy = "order", cascade = ALL)
private List<OrderItem> orderItems = new ArrayList<>();
- 영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없다.
CASCADE 종류
- ALL : 모두 적용
- PERSIST : 영속 - 삭제하면 안 될 때, 저장할 때만 써야 할 때
- REMOVE : 삭제
- 그 외...
주의할 점
- 하나의 부모 테이블이 자식 테이블을 관리할 때에만 쓴다. (자식 테이블을 여러 곳에서 관리를 할 때에는 쓰지 않는다.)
- 부모 테이블과 자식 테이블의 라이프 사이클이 유사할 때 사용한다.
고아 객체
부모 엔티티와 연관관계가 끊어진 자식 엔티티를 자동으로 삭제하는 기능이다.
@OneToMany(mappedBy = "order", orphanRemoval = true)
private List<OrderItem> orderItems = new ArrayList<>();
orphanRemooval = true로 설정한다.
Order order = em.find(Order.class, id);
order.getOrderItem().remove(0); //orderItem의 0번째 인덱스 삭제
자식 엔티티를 컬렉션에서 제거할 수 있다.
주의할 점
- 참조가 제거된 엔티티는 다른 곳에서 참조하지 않는 고아 객체로 보고 삭제한다.
- 참조하는 곳이 하나일 때 사용한다.
- 특정 엔티티가 개인 소유할 때 사용한다.
- @OneToOne, @OneToMany만 가능하다.
개념적으로 보면 CascadeType.REMOVE 와 같이 부모를 제거하면 자식은 고아가 된다.
고아 객체 제거 기능을 활성화하면 부모를 제거할 때 자식도 함께 제거된다.
영속성 전이 + 고아 객체
@OneToMany(mappedBy = "order", cascade = ALL, orphanRemoval = true)
private List<OrderItem> orderItems = new ArrayList<>();
- 스스로 생명주기를 관리하는 엔티티는 em.persist()로 영속화, em.remove()로 제거한다.
- 라이프 사이클을 jpa의 영속 컨텍스트를 통해서 하는 것. (DB나 repository 필요 없이)
- 두 옵션을 모두 활성화하면 부모 엔티티를 통해서 자식의 생명 주기를 관리할 수 있다.
'2세 > JPA' 카테고리의 다른 글
| [JPA] 컬렉션 조회 최적화(1) (0) | 2024.02.25 |
|---|---|
| [JPA] 지연 로딩과 조회 성능 최적화(3) (1) | 2024.02.24 |
| [JPA] 프록시 - 즉시 로딩과 지연 로딩 (0) | 2024.02.22 |
| [JPA] 프록시 (0) | 2024.02.21 |
| [JPA] 지연 로딩과 조회 성능 최적화(2) (0) | 2024.02.20 |