Spring Boot N+1 문제를 직접 만나며 JPA 깊이 체감
Java 기반 Spring Boot 프로젝트를 팀 프로젝트에서 처음 써봤습니다. 기능은 REST API 서버였고, 제가 담당한 부분은 회원 관리와 인증 모듈이었습니다. Java를 고른 이유는 팀원 대부분이 학교 수업에서 써봤고, Spring Boot의 DI 컨테이너와 JPA가 개발 속도를 높일 수 있다는 판단이었습니다. 실제로 JPA로 DB 조작 코드를 줄이는 건 좋았는데, 반면 LazyLoading에서 N+1 문제가 발생해 쿼리가 폭발하는 경험을 했습니다.
@EntityGraph로 해결했지만 문제를 인지하는 데 하루를 썼습니다. 한계는 Kotlin은 문법만 공부했을 뿐 실제 프로젝트에 써본 적은 없다는 점입니다. 코루틴이나 null-safety 같은 장점은 이론으로만 알고 있어서 다음에 써보고 싶습니다.