목차
1. JPA에서 N+1 문제란 무엇인가?
JPA(Java Persistence API)는 객체와 RDB 간의 매핑을 지원,
SQL를 직접 작성하지 않고 데이터 베이스 작업 가능하다
그러나 JPA를 사용할 때 흔히 발생하는 문제 중 하나가 바로 N+1 문제
처음 spring을 접할 때 문제만 알고 있었는데, 좀 더 깊숙하게 파고 들자.
(예전에 알아 볼 땐 n+1보다 1+n이 더 맞다는 표현으로 기억하는데.. 실습하면서 정말로 확인해보자!)
그래서?
N+1 문제는 JPA 또는 ORM(Object-Relational Mapping) 툴을 사용할 때 자주 발생하는 성능 문제
간단히 말해, 하나의 쿼리를 실행한 후 관련된 데이터를 가져오기 위해 추가적으로 N개의 쿼리가 실행되는 상황을 의미
2. 실습 환경
- 스프링 부트 3.4.4
- Spring Data JPA
- MySQL
2-1. 연관 관계 구조
연습용 연관 관계는 “국가” : “도시” = 1 : N 형태의 JOIN
따라서 “korea”라는 하나의 CountryEntity에
“seoul”, “busan”과 같은 CityEntity가 연관됨
2-2. 프로젝트 구조

https://kghworks.tistory.com/158
[Java] JPA N+1 원리 이해하기
목차 N+1 문제 정의 N+1 원인 1. 연관관계의 주인이 누구인가 N+1 원인 2. JPQL은 연관객체의 fetchType을 모른다 N+1 해결방법 정리 참고 포스팅에는 아주 간단히 아래 2개의 테이블을 사용한다. @Entity @Ta
kghworks.tistory.com
https://velog.io/@skyepodium/JPA-N1-%EB%AC%B8%EC%A0%9C%EB%8A%94-%EB%82%AF%EC%84%A4%EC%96%B4%EC%84%9C
'Spring' 카테고리의 다른 글
| Chain of Responsibility (0) | 2025.05.10 |
|---|---|
| 사용자 요청부터 스프링 시큐리티까지 feat)OAuth2 (0) | 2025.04.14 |
| @transactional을 private메서드에 사용하고 싶다 (0) | 2024.01.21 |
| @entity 빨간줄 (0) | 2024.01.16 |