[Spring Data Jpa] 3가지 방법으로 N+1 문제 해결해보기 (Fetch Join, Batch Fetching, EntityGraph)
JPA N+1 문제란? JPA의 N+1문제는 연관관계가 설정된 엔티티를 조회할 경우에, 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 "추가로" 발생하는 현상이다. 즉, 조회시 쿼리 1개를 생각하고 설계를 했는데, 예상치 못한 쓸모가 없는 N개의 조회 쿼리가 더 발생하는 문제이다. 이렇게 비효율적인 쿼리가 실행되게 되면, 트랜잭션 응답 속도가 느려지고, 데이터베이스 부하가 커지며, 시스템 성능이 급격히 저하 될 수 있어 해결해야 한다. 가장 대표적인 예로는 게시판과 댓글 엔티티가 있고, 1대 n으로 매핑되어 있을때, 게시글을 조회한 후 게시글마다 댓글을 조회하기 위해 추가 쿼리가 발생하는 경우이다. 댓글이 10개 달린 게시글 하나를 조회할 때 총 11개의 쿼리(게시글 조회 1개 + 각 게시글 댓..
2025. 1. 16.
[Spring Boot] 로깅이란? 3가지 Logging 방식 소개
위 Spring Boot Logging 공식 문서를 살펴보면, 아래와 같은 문구가 맨 위에 나온다. Spring Boot는 내부 로깅에 Commons Logging을 사용하지만, 실제 로깅 구현체는 사용자가 선택할 수 있도록 열려 있다. Java Util Logging, Log4j2, Logback에 대한 기본 설정이 제공되는데, 각각의 경우 로거는 기본적으로 콘솔 출력이 사용되며, 선택적으로 파일 출력도 가능하다. 기본적으로, Spring Boot 스타터를 사용하면 Logback이 로깅 프레임워크로 사용된다. 또한, Logback 라우팅이 적절히 구성되어 있어서 Java Util Logging, Commons Logging, Log4J, 또는 SLF4J 를 사용하는 의존 라이브러리들도 문제없이 동작하..
2024. 11. 11.