-
[Spring] 지연로딩, 즉시 로딩Spring 2025. 4. 16. 23:11#LazyLoading #EagerLoading
💡 Spring 정리: 지연 vs 즉시 로딩
📘 개념 정리
지연 로딩(LAZY) 즉시 로딩(EAGER) 특징 연관된 엔티티는 실제로 접근하는 순간 로딩된다. 엔티티를 조회할 때 연관된 엔티티도 즉시 같이 조회 코드에서
사용법(fetch = FetchType.LAZY) ( fetch = FetchType.EAGER) 기본 값
사용@OneToMany , @ManyToMany @ManyToOne, @OneToOne 장점 초기 조회 시: 연관된 엔티티를 불러오지 않아서 빠름
(불필요한 쿼리 방지)
필요한 순간에만 쿼리를 날리므로, 메모리 낭비 방지 & 성능 최적화
자주 접근하는 연관 데이터라면: 캐시나 프록시 객체 덕분에 반복 조회 시 효율적
지연 로딩은 느린 게 아니라, "필요한 순간에 최적화된 방식"이다.처음부터 필요한 데이터를 한 번에 가져올 수 있음
개발자가 예상하지 못한 SQL이 실행된다.단점 사용 시점마다 쿼리가 추가발생하여 N+1 문제가 발생한다. 필요 없는 데이터까지 불러올 수 있어 쿼리와
메모리 비용 증가 위험.⚠️ 실수 및 주의사항
즉시 로딩을 사용하면 개발자가 예상치 못한 SQL이 실행된다.
- 연관된 Entity만큼 JOIN되어 과도한 쿼리 발생 한다.
- FetchType.LAZY 설정 필요
- 꼭 필요한 경우가 아니라면 지연 로딩을 사용하자.
✨ 팁 & 인사이트
연관관계는 기본적으로 Lazy로 설정하고, 정말 꼭 필요할 때만 Eager 또는
fetch join/EntityGraph로 제어하는 것이 JPA 최적화의 핵심이다.'Spring' 카테고리의 다른 글
[Spring] 고아 객체 (0) 2025.04.17 [Spring] 영속성 전이 (Cascade) (0) 2025.04.17 [Spring] Proxy (0) 2025.04.16 [Spring] 연관관계 유형 (0) 2025.04.16 [Spring] 연관관계1 (1) 2025.04.16