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
- 파이썬
- baekjoon
- postgresql
- Java
- 플러터
- CS
- Spring Security
- CS지식
- backjoon
- 자바
- DB
- 시큐리티
- Oracle
- 데이터베이스
- 자료구조
- springboot
- 프로그래머스
- 스프링 부트 쇼핑몰 프로젝트 with JPA
- 백준
- 스프링부트
- spring
- 네트워크
- 리눅스
- JPA
- Flutter
- 자바스크립트
- 데이터
- programmers
- python
- 스프링
Archives
- Today
- Total
Jin's Dev Story
[Spring Data JPA] 영속성 전이, 고아객체 본문
영속성 전이
- 엔티티의 상태를 변경할 때 해당 엔티티와 연관된 엔티티의 상태 변화를 전파시키는 옵션
- ex) 학생이라는 엔티티가 있는데 학생이 졸업을 해서 연관된 엔티티들을 지워야함
- 하나도 남김 없이 연관된 엔티티를 지워야만 메인(학생)엔티티를 지울 수 있음
- 이걸 설정하는게 영속성 전이
- cascade 옵션
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL) // 양방향 매핑을 하기 위해 설정
private List<OrderItem> orderItems = new ArrayList<>();
1. 주문 영속성 전이
- 부모인 Order Entity가 저장될 때, 자식인 OrderItem 또한 저장되는 영속성 전이
- OrderRepository 생성
import kr.spring.order.entity.Order;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List;
public interface OrderRepository extends JpaRepository<Order, Long> {
}
- 부모 Order Entity CASCADE 지정
// 양방향 매핑을 하기 위해 설정, 영속성 전이 설정, 고아객체 설정(고아객체가 되면 다 날려버리겠다는 것)
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY)
private List<OrderItem> orderItems = new ArrayList<>();
고아 객체
- 부모 엔티티와 연관 관계가 끊어진 자식 엔티티
- 영속성 전이 기능과 같이 사용하면 부모 엔티티를 통해서 자식의 생명 주기를 관리할 수 있음
- 고아객체 제거 기능은 참조하는 곳이 하나일 때만 사용
- OrderItem엔티티를 Order 엔티티가 아닌 다른 곳에서 사용하고 있다면 이 기능을 사용하면 안됨
- @OneToOne, @OneToMany 어노테이션에서 “orphanRemoval = true” 옵션 사용
- 부모 Entity에 orphanRemoval = true 설정
// 양방향 매핑을 하기 위해 설정, 영속성 전이 설정, 고아객체 설정(고아객체가 되면 다 날려버리겠다는 것)
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL, orphanRemoval = true)
private List<OrderItem> orderItems = new ArrayList<>();
영속성 전이 vs 고아객체 제거
- 영속성 전이 - 부모 엔티티가 삭제될 때 같이 삭제되는 것
- 고아객체 제거 - 부모 엔티티와의 연관관계가 끊어질 때 삭제되는 것
'Web & Android > Spring Data JPA' 카테고리의 다른 글
[Spring Data JPA] 즉시로딩, 지연로딩 (0) | 2023.10.15 |
---|---|
[Spring Data JPA] 연관 관계 매핑 (0) | 2023.10.15 |
[Spring Data JPA] Querydsl (0) | 2023.10.15 |
[Spring Data JPA] @Query (0) | 2023.10.14 |
[Spring Data JPA] JPA (0) | 2023.10.14 |