Backend/JPA 23

테스트를 위한 H2 Database + Spring Data JPA 구성 방법

참고용 QueryDSL 설정2025.03.13 - [Backend/JPA] - JPA (Spring Data JPA) - Spring Boot 3+ QueryDSL 및 JPA 기본 설정, p6spy 로깅 방법1. 아래 내용을 진행하기에 앞서 H2 데이터베이스 설치 (운영체제에 맞게 설치)https://www.h2database.com/html/main.html2. 설치 후, h2 데이터베이스 실행설치된 h2 데이터베이스 경로에서 bat 파일 실행해주기h2\bin 이동 -> h2.bat 클릭하여 실행터미널 명령어를 통해 실행h2 디렉토리 bin 폴더 경로로 이동 후(예: cd /h2/bin) 아래 명령어 입력.\h2.bat 3. 실행 후, h2 콘솔이 띄워지면 도메인명 localhost로 변경 4. 위까지..

Backend/JPA 2025.04.18

Spring Data JPA와 Querydsl을 활용한 페이징 처리 및 성능 최적화

📌 목차 1. 사용자 정의 리포지토리에서 페이징 메서드 선언 2. fetchResults()를 이용한 단순 페이징 방식 3. content와 count 쿼리 분리 방식 4. PageableExecutionUtils를 이용한 고급 최적화 5. 정렬 처리: Sort → OrderSpecifier 변환 6. 실제 컨트롤러에서의 적용 7. 요약 정리 ">📌 목차1. 사용자 정의 리포지토리에서 페이징 메서드 선언 2. fetchResults()를 이용한 단순 페이징 방식 3. content와 count 쿼리 분리 방식 4. PageableExecutionUtils를 이용한 고급 최적화 5. 정렬 처리: Sort → OrderSpecifier 변환 6. 실제 컨트롤러에서의 적용 7. 요약 정리 1. 사용자 정의..

Backend/JPA 2025.04.11

Querydsl - 사용자 정의 JPA 리포지토리 설계 및 구현

📌 목차 1. 기본 JPA Repository의 한계 2. 사용자 정의 리포지토리 설계 및 구현 3. Querydsl 기반 동적 검색 로직 구현 4. 테스트 코드를 통한 검증 5. 전체 구조 요약 6. 추가 팁 및 주의사항 ">📌 목차1. 기본 JPA Repository의 한계 2. 사용자 정의 리포지토리 설계 및 구현 3. Querydsl 기반 동적 검색 로직 구현 4. 테스트 코드를 통한 검증 5. 전체 구조 요약 6. 추가 팁 및 주의사항 1. 기본 JPA Repository의 한계">1. 기본 JPA Repository의 한계Spring Data JPA는 JpaRepository 인터페이스를 통해 CRUD 기능 및 간단한 쿼리 메서드를 손쉽게 제공한다. 예컨대, 다음과 같이 사용자 이름을 기준..

Backend/JPA 2025.04.11

QueryDSL - 한 번의 SQL 쿼리로 여러 건의 데이터를 일괄 수정 또는 삭제하는 방법 (벌크 연산)

📌 목차 1. 벌크 연산이란? 2. QueryDSL 벌크 수정 (Update) 3. QueryDSL 벌크 삭제 (Delete) 4. 주의사항: 영속성 컨텍스트와의 관계 5. 추가로 알아야 할 개념 6. 정리 ">📌 목차1. 벌크 연산이란? 2. QueryDSL 벌크 수정 (Update) 3. QueryDSL 벌크 삭제 (Delete) 4. 주의사항: 영속성 컨텍스트와의 관계 5. 추가로 알아야 할 개념 6. 정리 1. 벌크 연산이란?">1. 벌크 연산이란?벌크 연산(Bulk Operation)이란, 한 번의 SQL 쿼리로 여러 건의 데이터를 일괄 수정 또는 삭제하는 작업을 말한다.이는 개별 엔티티를 하나씩 수정하거나 삭제하는 것보다 훨씬 빠르고 효율적이다.특징설명목적대량 데이터 일괄 처리성능단건 처리..

Backend/JPA 2025.03.25

QueryDSL 동적 쿼리 - (BooleanBuilder, Where 다중 파라미터 방식)

📌 목차 1. 동적 쿼리(Dynamic Query)란? 2. BooleanBuilder 방식 3. where 다중 파라미터 방식 4. 두 방식의 차이점 및 비교 5. 추가적으로 알아야 할 개념 6. 정리 ">📌 목차1. 동적 쿼리(Dynamic Query)란? 2. BooleanBuilder 방식 3. where 다중 파라미터 방식 4. 두 방식의 차이점 및 비교 5. 추가적으로 알아야 할 개념 6. 정리 1. 동적 쿼리(Dynamic Query)란?">1. 동적 쿼리(Dynamic Query)란?동적 쿼리란 입력값에 따라 where 절의 조건이 유동적으로 바뀌는 쿼리를 의미한다.예시검색 조건으로 이름, 나이 중 하나만 입력한 경우사용자 선택에 따라 조건이 유동적으로 적용되는 UI 필터QueryDSL..

Backend/JPA 2025.03.25

QueryDsl - 프로젝션을 DTO 결과로 반환하는 방법과 개념

📌 목차 1. 프로젝션(Projection)이란? 2. 순수 JPA에서 DTO 조회 3. QueryDSL에서 DTO 조회 4. DTO 필드명이 다를 경우 처리 5. @QueryProjection을 활용한 DTO 조회 6. 비교 정리">📌 목차1. 프로젝션(Projection)이란? 2. 순수 JPA에서 DTO 조회 3. QueryDSL에서 DTO 조회 4. DTO 필드명이 다를 경우 처리 5. @QueryProjection을 활용한 DTO 조회 6. 비교 정리 1. 프로젝션(Projection)이란?">1. 프로젝션(Projection)이란?프로젝션(Projection)은 쿼리 결과에서 특정 필드만 선택하여 반환하는 기법을 의미한다.JPA에서 엔티티 전체를 조회하는 것이 아니라, 필요한 데이터만 선택..

Backend/JPA 2025.03.17

JPA (Spring Data JPA) - Spring Boot 3+ QueryDSL 및 JPA 기본 설정, p6spy 로깅 방법

📌 목차 1. QueryDSL 개요 2. QueryDSL 설정 및 빌드 프로세스 3. JPA 관련 YML 설정 4. Hibernate Dialect 및 ddl-auto 설정 5. P6Spy를 활용한 SQL 로그 설정 6. 정리 ">📌 목차1. QueryDSL 개요 2. QueryDSL 설정 및 빌드 프로세스 3. JPA 관련 YML 설정 4. Hibernate Dialect 및 ddl-auto 설정 5. P6Spy를 활용한 SQL 로그 설정 6. 정리 1. QueryDSL 개요">1. QueryDSL 개요QueryDSL이란?QueryDSL은 타입 세이프(Typed-safe)한 쿼리를 작성할 수 있도록 지원하는 DSL(Domain Specific Language) 라이브러리다.JPA, SQL, Mong..

Backend/JPA 2025.03.13

JPA (Spring Data JPA) - SimpleJpaRepository(JPA Repository 기본 구현체) 파악해보기

📌 목차 1. SimpleJpaRepository란? 2. SimpleJpaRepository의 주요 특징 3. save() 메서드 분석 4. 새로운 엔티티 판별 방식 5. Persistable 인터페이스를 활용한 새로운 엔티티 판별 6. 정리 ">📌 목차1. SimpleJpaRepository란? 2. SimpleJpaRepository의 주요 특징 3. save() 메서드 분석 4. 새로운 엔티티 판별 방식 5. Persistable 인터페이스를 활용한 새로운 엔티티 판별 6. 정리Spring Data JPA에서 JpaRepository 인터페이스의 기본 구현체로 사용되는 클래스다.Spring이 JPA 리포지토리를 자동으로 생성할 때 내부적으로 사용되며, 기본적인 CRUD 기능을 수행한다.주요 역..

Backend/JPA 2025.03.13

JPA (Spring Data JPA) - JPA 페이징과 정렬 처리 방법

📌 목차 1. 페이징과 정렬이란? 2. 페이징과 정렬 예제 3. 요청 파라미터 사용법 4. 글로벌 기본값 설정 5. DTO로 변환하여 반환 6. 정리 ">📌 목차1. 페이징과 정렬이란? 2. 페이징과 정렬 예제 3. 요청 파라미터 사용법 4. 글로벌 기본값 설정 5. DTO로 변환하여 반환 6. 정리1. 페이징과 정렬이란?">1. 페이징과 정렬이란?페이징 (Pagination)페이징(Pagination)은 대량의 데이터를 한 번에 조회하지 않고, 일정한 크기로 나누어 가져오는 방법이다.예를 들어, 사용자가 웹 애플리케이션에서 10개의 데이터만 한 번에 조회하도록 설정하면 메모리 사용량을 줄이고 응답 속도를 최적화할 수 있다.정렬 (Sorting)정렬(Sorting)은 특정 컬럼을 기준으로 데이터의 정..

Backend/JPA 2025.03.12

JPA (Spring Data JPA) - 컨트롤러 파라미터에서 엔티티의 ID를 자동으로 엔티티 객체로 변환하는 방법 (도메인 클래스 컨버터)

📌 목차 1. 도메인 클래스 컨버터란? 2. 도메인 클래스 컨버터 적용 전 3. 도메인 클래스 컨버터 적용 후 4. 도메인 클래스 컨버터의 동작 방식 5. 도메인 클래스 컨버터의 한계 및 주의사항 6. 정리 ">📌 목차1. 도메인 클래스 컨버터란? 2. 도메인 클래스 컨버터 적용 전 3. 도메인 클래스 컨버터 적용 후 4. 도메인 클래스 컨버터의 동작 방식 5. 도메인 클래스 컨버터의 한계 및 주의사항 6. 정리 1. 도메인 클래스 컨버터란?">1. 도메인 클래스 컨버터란?도메인 클래스 컨버터(Domain Class Converter) 는 HTTP 요청에서 전달된 엔티티의 ID 값을 기반으로 자동으로 엔티티 객체로 변환해주는 기능이다.즉, 컨트롤러에서 객체의 ID를 직접 조회하는 코드 없이(예: fi..

Backend/JPA 2025.03.12