Spring Data JPA

Spring

[Spring] Spring Data JPA에서 @ManyToOne 관계 N + 1 문제 해결하기

개요 이번 글에서는 Spring Data JPA에서 @ManyToOne 관계를 가지는 엔티티를 조회할 때 발생하는 N + 1 문제를 해결하는 방법에 대해 이야기해 보려고 합니다. 배경 최근에 사내에 ORM을 사용하는 프로젝트가 많아지면서 @ManyToOne 관계를 가지는 엔티티를 조회할 때 N + 1 문제에 대해 고려하지 않고 개발되어 조회 쿼리가 추가적으로 발생되는 이슈가 있어 N + 1 문제가 무엇인지 알아보고 어떻게 해결하는지에 대해 설명해 보겠습니다. N + 1 문제란? 연관 관계가 설정된 Entity를 조회할 경우에 조회된 데이터 개수(N) 만큼 연관관계의 조회 쿼리가 추가로 발생하는 문제이다. N + 1 문제 예시 - Lazy Loading @Entity @Getter public class ..

Project/Gameple

[Project - Gameple] Project Gameple(6) - Game Entity 설계

개요 저번 포스팅에서는 프로젝트에 Spring Security를 적용하여 임시적인 옵션들을 구성해 주었다. 이번 포스팅에서는 본격적인 API 개발을 위해 루트가 되는 Game 엔티티를 설계해 보겠다. Game Entity 설계(1) - 디렉토리 생성 및 클래스 생성 사진과 같이 Game이라는 도메인을 대표하는 루트 디렉토리 밑에 Entity라는 하위 디렉토리를 생성하여 Game이라는 클래스 파일을 생성해 준다. Game Entity 설계(2) - Entity 설계 package com.gamepleconnect.game.entity; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import javax.persi..

Spring

[Spring] JPA에서 findBy 매개변수 없이 사용하기

개요 이번 글에서는 JPA에서 findBy 매서드를 매개변수 없이 사용하는 방법에 대해 이야기해보려고 한다. 매개변수 없이 사용하면 좋은 점? 예를 들어 위와 같은 데이터가 있고 "삭제되지 않은" 데이터들을 불러올 때 우리는 다음과 같이 코드를 작성할 수 있다. List findAllByDeleteYn(boolean active); 이때 서비스 로직에서 active라는 매개변수값을 false로 넘겨주며 원하는 결과를 얻을 수 있을 것이다. 위와 같은 매서드는 삭제된 게시물만 조회하는 기능이 있는 운영툴과 같은 환경에선 확장성 있는 구조로 쓰일 수 있겠지만 사용자들이 직접 이용하는 환경에서는 삭제된 게시물이 노출되는 불상사가 발생할 수 있다. 우리는 "삭제되지 않은" 데이터들만 보여주길 원하는데 activ..

Doshisha
'Spring Data JPA' 태그의 글 목록