$백엔드 개발자 Rueun의 기술 블로그|Java · Spring · 클린 아키텍처🌱
#Development

JPA N+1 문제 해결과 쿼리 최적화

@2026-02-27·1 min read

N+1 문제란?

연관된 엔티티를 조회할 때 1번의 쿼리로 N개의 엔티티를 가져온 후, 각 엔티티의 연관 데이터를 조회하기 위해 N번의 추가 쿼리가 발생하는 문제입니다.

해결 방법

1. Fetch Join

JAVA
@Query("SELECT m FROM Member m JOIN FETCH m.team")
List<Member> findAllWithTeam();

2. EntityGraph

JAVA
@EntityGraph(attributePaths = {"team"})
@Query("SELECT m FROM Member m")
List<Member> findAllWithTeamGraph();

3. BatchSize

YAML
spring:
  jpa:
    properties:
      hibernate:
        default_batch_fetch_size: 100

쿼리 로그 확인

YAML
spring:
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true
logging:
  level:
    org.hibernate.SQL: DEBUG

정리

N+1 문제를 인지하고 적절한 전략을 선택하는 것이 JPA 성능 최적화의 핵심입니다.

§ 목차