728x90

querydsl 3

[Backend] 유저 프로필 모듈 구현5편: 응답 DTO 최적화와 Kafka 연동 흐름 정리

유저 프로필 기술 블로그 5편: 응답 DTO 최적화와 Kafka 연동 흐름 정리1. UserProfileResponse DTO란?유저의 공개 프로필 정보를 클라이언트에게 전달할 때 사용하는 응답 객체이다.@Getter@Builderpublic class UserProfileResponse { private Long userId; private String nickname; private String profileImageUrl; private String introduction; private String gender; private String location; private List genres; private List interests;}장르 및 관심사는 ..

BindProject 2025.06.23

[Backend] 유저 프로필 모듈 구현4-1편 N+1 문제 완전 정복: 유저 프로필 조회 최적화 여정

## 들어가며유저 프로필 조회 기능은 필터 조건이 다양하고, 관심사/장르 같은 N:M 관계가 얽혀 있어 **쿼리 성능 이슈가 빈번히 발생**합니다. 이 글에서는 실무에서 자주 마주치는 **N+1 문제**를 집중 분석하고, **QueryDSL + 페이징 최적화 전략**을 통해 이를 어떻게 극복했는지 상세히 설명합니다.## 1. N+1 문제란?> 엔티티 A를 1번 조회한 뒤, 관련된 B 엔티티를 N번 추가 조회하는 현상### 예시 상황```javaList profiles = userProfileRepository.findAll();for (UserProfile profile : profiles) { for (UserInterest interest : profile.getUserInterests()..

BindProject 2025.06.23

[Backend] 유저 프로필 모듈 구현4편 - DSL 기반 검색 기능과 응답 모델 설계

목차도입 - DSL을 선택한 이유전체 아키텍처 흐름DSL 쿼리 설계응답 모델 구조페이징 최적화 방식정리 및 다음 편 예고1. 도입 - DSL을 선택한 이유우리는 사용자 프로필을 다음 조건들로 검색해야 합니다:닉네임 (like 검색)성별지역관심사 (Instrument)선호 장르 (Genre)이러한 조건은 모두 **선택적(optional)**이고, 동시에 다중 값도 허용됩니다. 이를 만족하기 위한 쿼리 조건 생성과 join이 필요한데,Spring Data JPA의 기본 Repository만으로는 아래와 같은 제약이 있습니다:방식장점단점Method Query간단한 조건 처리복잡한 조합 불가Specification동적 조합 가능연관 관계 Join Fetch 어렵고 DSL보다 VerboseQuerydsl타입 안정..

BindProject 2025.06.23
728x90