JPA2 Spring Data Jpa의 N+1 문제 N+1 문제란 DB에서 데이터를 조회할 때 연관된 데이터를 추가로 쿼리문을 실행해 조회하는 현상을 뜻한다. 쿼리문이 추가로 실행되는게 무슨 대수냐 할 수 있지만 대부분의 DB는 Disk I/O와 Network I/O가 발생함으로 불필요한 쿼리가 실행되지 않게 해야 성능의 부담을 줄 수 있다. JPA에서 N+1 문제가 언제 발생하는지 알아보고 해결해 보겠다. 예를 위한 Person, Team 그리고 각각 Repository를 만들어 봤다. Person.class @Entity @Data @AllArgsConstructor @NoArgsConstructor @Builder public class Person { @Id @GeneratedValue private Long id; private String na.. 2022. 2. 7. Spring JPA Specification을 사용해 유연하게 조회 API 만들기 초기 프로젝트가 작았을 때, 조회 API를 만드는 것은 크게 어렵지 않았습니다. 하지만 기능이나 데이터가 추가되면서 조건식이 추가될 때마다 Repository 메서드를 만들어야 하는 게 너무 비효율적이었습니다. 혹시나 구글링을 해보니 JPA에서 Specification라는 것을 제공해주네요. 일단 Specification을 적용하기 전부터 보겠습니다. Person, Team 엔터티와 Controller, Repository를 만들었습니다. Person.class @Entity @Getter public class Person { @Id @GeneratedValue @Column(name = "person_id") private Long id; private String firstName; private .. 2021. 11. 8. 이전 1 다음 728x90