Search
Duplicate

실무 활용 - 스프링 데이터 JPA와 Querydsl

스프링 데이터 JPA 리포지토리로 변경

이전에 작성했던 순수 JPA를 이용한 코드들을 스프링 데이터 JPA로 구현해보도록 하겠습니다.

스프링 데이터 JPA - MemberRepository 코드 작성

Code

스프링 데이터 JPA - 테스트 코드 작성

Code

사용자 정의 리포지토리

사용자 정의 리포지토리 사용법은 아래와 같다.

1.
사용자 정의 인터페이스 작성
2.
사용자 정의 인터페이스 구현
3.
스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속

사용자 정의 리포지토리 구성

1. 사용자 정의 인터페이스 작성

Code

2. 사용자 정의 인터페이스 구현

Code

3. 스프링 데이터 리포지토리에 사용자 정의 인터페이스 상속

Code

4. 사용자 정의 리포지토리 테스트 코드 작성

Code

스프링 데이터 페이징 활용1 - Querydsl 페이징 연동

스프링 데이터의 Page, Pageable 을 활용해본다.
전체 카운트를 한번에 조회하는 단순한 방법
데이터 내용과 전체 카운트를 별도로 조회하는 방법

사용자 정의 인터페이스에 페이징 2가지 추가

Code

1. 전체 카운트를 한번에 조회하는 단순한 방법 - searchPageSimple()

Code

1-1 테스트 코드 작성

Code

2. 데이터 내용과 전체 카운트를 별도로 조회하는 방법 - searchPageComplex()

Code

스프링 데이터 페이징 활용2 - CountQuery 최적화

PageableExecutionUtils.getPage()로 최적화

Code

스프링 데이터 페이징 활용3 - 컨트롤러 개발

1. Controller API작성

Code

스프링 데이터 정렬(Sort)

스프링 데이터 JPA는 자신의 정렬(Sort)을 Querydsl의 정렬(OrderSpecifier)로 편리하게 변경하는 기능을 제공한다.
스프링 데이터의 정렬을 Querydsl의 정렬로 직접 전환하는 방법은 다음 코드를 참고해봅시다.

스프링 데이터 Sort를 Querydsl의 OrderSpecifier로 변환

Code
참고: 정렬(Sort)은 조건이 조금만 복잡해져도 PageableSort 기능을 사용하기 어렵다. 루트 엔티티 범위를 넘어가는 동적 정렬 기능이 필요하면 스프링 데이터 페이징이 제공하는 Sort를 사용하기보다는 파라미터를 직접 받아서 처리하는게 좋다.