[JPA] N+1 문제 개선
·
Spring
JPA에서 N+1 문제란?요청이 1개의 쿼리로 처리되기를 기대했는데 N개의 추가 쿼리가 발생하는 현상즉, 1번의 쿼리로 N개의 데이터를 조회한 후 각각에 대해 추가로 1번씩 쿼리를 실행하는 문제. 결과적으로는 1 + N번의 쿼리가 실행된다.현상 분석 전 JPA의 핵심개념영속성 컨텍스트(Persistence Context): 엔티티를 관리하는 메모리 공간프록시 객체(Proxy): 실제 객체 대신 사용하는 가짜 객체지연 로딩(Lazy Loading): 필요할 때까지 데이터를 조회하지 않는 전략왜 N+1 쿼리가 발생하는가?JPA가 문제를 일으키는 근본적인 이유는 '관계를 맺고 있는 엔티티에 대한 조회 시점을 최적화' 하려는 시도 때문사용하는 Fetch 전략은 3가지가 있다. EAGER Loading, LAZY..
프로젝트 환경설정
·
Spring
프로젝트 생성스프링 부트 스타터 (https://start.spring.io)쉽게 프로젝트를 만들 수 있음.project✅ Gradle - GroovyGradle - KotlinMavenMetadata // 의미하는 바 확인하기Group: jpabookArtifact: jpashopDependencies(의존관계)검색해서 원하는 의존성을 추가해준다.Spring Web (구 Spring Web Starter): RESTful API, Tomcat 컨테이너로 빌드Thymeleaf: 모던 서버사이드 자바 템플릿Spring Data JPA: 유틸성 라이브러리H2 Database: 개발 또는 테스트에 특화된 데이터베이스. MySQL는 환경설정시 까다로운데, h2는 간단하게 내부에서 구동가능Lombok: 반복코드를..