[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.
[회고록] 2024년, 대학교 3학년을 마무리하며
2024 목표는 얼마나 달성했나?2024년 목표는 거의 다 이뤘다. 알고리즘 공부를 꾸준히 해서 백준 플래티넘을 달성했고, KAUPC에서도 나름 좋은 성적을 거뒀다. OS, 네트워크, 보안, 데이터베이스 등 CS 전반적인 공부도 열심히 해서 전체 평점 4.25를 기록했다. 프로젝트도 정말 열심히 했지만, 지금 돌아보니 너무 급급하게 개발했던 것 같다. 1년 동안 스프링 프로젝트만 5개(UMC, Reborn, Kopis, Wish, VIS)를 진행했고, 현재는 두 개의 프로젝트를 이어서 하고 있다 보니 조금 과했던 것 같다. 그래도 다양한 기획에 참여하고, 여러 사람들과 소통하며 많은 이슈들을 다뤄본 덕에 값진 경험을 쌓을 수 있었다. 그 과정에서 어려움도 많았지만, 하나씩 해결하며 잘 헤쳐 나왔다. 현재..
2025. 1. 1.