일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- flet
- Database
- 데이터베이스
- 자바암호
- chatGPT's answer
- oracle
- 유닉스
- python
- 소프트웨어공학
- NIO
- JVM
- spring data jpa
- write by GPT-4
- android
- 고전역학
- jpa
- 인프라
- write by chatGPT
- kotlin
- GPT-4's answer
- Java
- 자바
- 리눅스
- 역학
- 웹 크롤링
- spring integration
- 시스템
- 자바네트워크
- 코틀린
- 파이썬
- Today
- Total
Akashic Records
Spring Data JPA , FetchType 본문
FetchType은 JPA에서 엔티티 간의 관계를 로드하는 전략을 결정하는 역할을 합니다. FetchType은 주로 @ManyToOne, @OneToMany, @OneToOne, @ManyToMany와 같은 관계를 정의하는 어노테이션에서 사용됩니다. FetchType에는 EAGER와 LAZY 두 가지 옵션이 있습니다.
FetchType.EAGER (즉시 로딩):
EAGER 전략은 부모 엔티티를 조회할 때 관련된 자식 엔티티를 함께 로드합니다. 이 방식은 부모 엔티티를 조회하는 즉시 관련된 자식 엔티티에 대한 데이터도 함께 로드되므로, 연관된 엔티티의 데이터를 필요로 하는 경우 효과적입니다.
그러나 즉시 로딩은 성능에 영향을 줄 수 있습니다. 관련된 엔티티가 많거나, 필요하지 않은 데이터를 로드하는 경우가 있기 때문입니다.
FetchType.LAZY (지연 로딩):
LAZY 전략은 부모 엔티티를 조회할 때 관련된 자식 엔티티를 로드하지 않습니다. 대신, 실제로 자식 엔티티에 접근이 필요한 시점에만 데이터를 로드합니다. 이 방식은 연관된 엔티티의 데이터가 필요하지 않은 경우 성능을 향상시키는 데 도움이 됩니다.
지연 로딩은 성능 최적화에 도움이 되지만, 영속성 컨텍스트가 종료된 후에 관련된 엔티티에 접근하려는 경우 문제가 발생할 수 있습니다.
기본적으로 @ManyToOne 및 @OneToOne 관계는 FetchType.EAGER 전략을 사용하고, @OneToMany 및 @ManyToMany 관계는 FetchType.LAZY 전략을 사용합니다. 그러나 필요에 따라 FetchType을 명시적으로 설정하여 로딩 전략을 변경할 수 있습니다.
데이터 접근 패턴과 성능 요구 사항에 따라 적절한 FetchType을 선택하면 성능을 최적화할 수 있습니다. 필요한 경우 FetchType을 조정하여 성능이나 메모리 사용을 최적화할 수 있습니다.
'Spring.io' 카테고리의 다른 글
Spring Batch SFTP SSH ItemReader, ItemWriter (0) | 2023.04.17 |
---|---|
Spring Boot Filter 사용법 (0) | 2023.04.15 |
Spring Data JPA, @OneToMany 무한 반복 오류 (0) | 2023.04.12 |
Spring Data JPA, 페이지 및 정렬 (0) | 2023.04.10 |
Spring Data JPA @Query 어노테이션 (0) | 2023.04.10 |