본문 바로가기
Spring

JPA 1+N 문제 실습(1)

by ernest45 2025. 4. 12.

 

목차

     

    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