← 질문 목록
#138깊이 0
즉시 로딩을 기본값처럼 쓰면 왜 위험한가?
사용하지 않는 연관관계까지 읽어 과조회가 생긴다. 조인이 보장되는 것도 아니어서 보조 쿼리가 반복되면 N+1과 메모리 낭비로 이어진다.
| 기준 | 지연 | 즉시 |
|---|---|---|
| 시점 | 접근할 때 | 주 객체 조회 때 |
| 통제 | 용도별 선택 | 항상 적용 |
| 위험 | 세션 밖 접근 | 과조회·N+1 |
기본 매핑은 지연 로딩으로 두고 유스케이스마다 fetch join, EntityGraph, 배치 조회를 선택하면 SQL 모양을 의도적으로 통제할 수 있다.
지연 프록시를 영속성 컨텍스트 밖에서 건드리면 초기화에 실패한다. 응답 직렬화가 연관관계를 순회하면 예기치 않은 쿼리도 발생한다.
컬렉션 fetch join은 중복 행을 만들고 페이징을 깨뜨릴 수 있다. 먼저 루트 식별자를 페이지로 구한 뒤 별도 조회하는 방식도 검토한다.
추천 꼬리질문
관련 질문
- JPA에서 N+1 쿼리는 왜 생기고 무엇으로 막는가?프레임워크즉시 로딩(EAGER) 설정은 JPA의 N+1 쿼리 문제를 유발하는 주요 원인 중 하나이다.
- 엔티티를 API 응답에 바로 쓰면 무엇이 새는가?프레임워크엔티티를 API 응답에 직접 노출할 때 발생하는 순환 참조 및 불필요한 데이터 노출 문제는 즉시 로딩 설정으로 인한 예기치 못한 쿼리 실행 및 성능 저하와 데이터 캡슐화 위반이라는 공통된 관점을 공유한다.
- 첫 화면을 빠르게 띄우려면 무엇을 미뤄야 하는가?모바일
- 큰 파일을 통째로 읽으면 무엇이 문제인가?운영체제
- useEffect 의존성 배열을 잘못 넣으면 어떤 문제가 생기는가?프론트엔드