JPA 2

[Java] JPA에서 발생하는 N+1 이슈: 원인부터 해결까지

JPA를 처음 사용할 때 많은 개발자들이 부딪히는 문제 중 하나가 바로 N+1 이슈입니다. 이번 글에서는 JPA 환경에서 N+1 이슈가 발생하는 원인을 알아보고, 이를 해결할 수 있는 방법을 정리해보겠습니다.   N+1 이슈란?N+1 이슈는 1개의 메인 쿼리로 데이터를 가져오려 했지만, 추가로 N개의 쿼리가 실행되는 문제를 뜻합니다.다음은 간단한 예제를 통해 이를 이해해보겠습니다. 엔티티 구조Member와 Order 간에 일대다 관계가 있다고 가정합니다.@Entitypublic class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; @One..

Backend/Java 2024.11.27

[Spring] JPA에서 쿼리 사용하는 방법

JPA에서 당연한 듯 사용하고 있었던 쿼리 메서드를 사용하면서 쿼리를 표현할 수 있는 방법들이 뭐가 있었지?라는 생각으로 오늘은 쿼리를 표현할 수 있는 방법과 각 방법의 장단점에 대해 정리해 보겠습니다.😎 Spring Data JPA 쿼리 메서드Spring Data JPA는 메서드 이름을 기반으로 쿼리를 자동 생성할 수 있는 기능을 제공합니다.간단한 쿼리에서는 매우 유용합니다. 장점간편하다!메서드의 이름만으로 쿼리를 자동 생성할 수 있습니다.빠른 개발간단한 쿼리의 경우 매우 빠르게 개발할 수 있습니다.단점복잡한 쿼리 한계매우 복잡한 쿼리는 작성하기 어렵습니다.메서드 이름 길이복잡한 쿼리를 작성하려면 메서드 이름이 매우 길어질 수 있습니다.예시는 아래와 같습니다.List findByTitleContain..

Backend/Spring 2024.07.11