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 |
Tags
- Spring Batch
- MSA
- Reduxpender
- MFA
- AuthenticatoinProvide
- Crawling
- stopPropogation
- axios
- REACT
- Filter
- openapi3
- Spring REST Docs
- Spring Security
- preventdefault
- Flyway
- OpenStack
- SpringBoot
- cheerio
- Pender
- gradle
- 리액트
- T-OTP
- JavaScript
- SpringRESTDocs
- UsernamePasswordAuthenticationFilter
- vue
- SWAGGER
- cloud native
- tasklet
- vuejs
Archives
- Today
- Total
Miracle Morning, LHWN
3. 프록시와 연관관계 본문
# 프록시
데이터가 실제 필요할 때 데이터를 불러오는 지연 로딩을 사용하는 경우 실제 엔티티 객체 대신 사용되는 가짜 객체이다.
- 처음 사용할 때 한번만 초기화된다.
- 프록시 객체가 초기화되면 실제 엔티티에 접근할 수 있다.
- 프록시 객체는 원본 엔티티를 상속받은 객체이므로 타입체크 시 주의해야한다.
- 영속성 컨텍스트에 실제 엔티티가 존재하는 상황이라면 프록시가 아닌 실제 엔티티를 반환한다.
- 초기화는 영속성 컨텍스트의 도움을 받아야 한다. 따라서 준영속 상태의 프록시를 초기화하면 문제가 발생한다.
# 즉시 로딩 (EAGER LOADING)
엔티티를 조회할 때 연관된 엔티티도 함께 조회한다.
# 지연 로딩 (LAZY LOADING)
연관된 엔티티를 실제 사용할 때 조회하며, 연관된 엔티티는 프록시로 조회한다.
JPA 의 기본 fetch 전략은 아래와 같다.
(1) @ManyToOne, @OneToOne : 즉시 로딩 (FetchType.EAGER)
(2) @OneToMany, @ManyToMany : 지연 로딩 (FetchType.LAZY)
# 영속성 전이 (CASCADE)
특정 엔티티를 영속상태로 만들 때 연관된 엔티티도 영속 상태로 만드는 기능이다.
영속성 전이는 영속화 시 연관된 엔티티도 같이 영속화하는 편의성만을 제공한다. 연관관계 매핑과는 관련없다.
# 고아 객체
부모 엔티티와 연관관계가 끊어진 자식 객체를 고아 (ORPHAN) 객체라고 한다.
매핑 annotation 에 orphanRemoval 속성을 true 로 설정하면
부모 엔티티의 컬렉션에서 자식 엔티티의 참조만 제거하면 자동으로 고아 엔티티가 삭제된다.
'IT 기술 > [JAVA] Spring Boot' 카테고리의 다른 글
5. 객체지향 쿼리언어_2 (0) | 2021.05.06 |
---|---|
4. 객체지향 쿼리언어_1 (0) | 2021.05.06 |
2. 연관관계매핑 (0) | 2021.05.05 |
1. 엔티티 (Entity) 와 엔티티 매니저 (Entity Manager) (0) | 2021.05.05 |
0. ORM 과 JPA 에 대해 (0) | 2021.05.05 |
Comments