
문제 JPA를 사용하면 흔히 발생하는 문제 중 하나가 N+1 이다. N+1을 알기전 JPA의 특성을 먼저 알아야한다. JPA는 두 도메인이 @OneToMany, @ManyToOne, @OneToOne, @ManyToMany와 같이 연관관계를 맺어 손쉽게 별도의 쿼리 없이 연관관계 객체를 불러 올 수 있다. 하지만 이렇게 편리한 기능에도 잘못 쓰면 사용자의 의도와 다르게 N+1과 같은 문제가 발생한다. N+1 문제는 사용자가 하나의 객체를 조회하기 위해 1번의 쿼리를 실행했지만, JPA 내부에서는 해당 객체와 연관된 N개의 객체를 조회하기 위해 추가로 N번의 쿼리를 실행하는 상황을 말한다. 사실 작은 서비스에서는 성능상 크게 문제가 되지 않지만 언제든 서비스는 확장될 수 있음을 염두해두고 개발하는것이 좋다..

Boilerplate란? 단순한 반복작업을 없애주고 생산성을 향상시켜주는 작업을 Boilerplate라 한다. 우리가 흔히 아는 보일러가 맞다. 보일러의 통은 보일러를 만드는데 무조건 필요하다. 기능만 업그레이드할 뿐 플레이트는 계속 찍어낸다. 개발에서 이런 보일러 통 생산같이 단순한 반복작업은 없앨수 있으면 무조건 없애는게 좋다.라이브러리의 버전은 달라질 수 도 있으나 구조는 비슷하므로 Koltin,Spring,JPA로boilerplate 프로젝트를 만들어보자! 1. https://start.spring.io/ 에서 밑과 같이 의존성 설정 후 생성 (DB는 취향껏, java 11버전이라 스프링 부트 버전 2.7.8로 선택했다. - 스프링 부트 3.0 버전 이상은 자바 17버전으로만 사용 가능) 2. b..