본문 바로가기

JPA/Querydsl17

Querydsl 17 - 스프링 데이터 jpa가 제공하는 Querydsl 기능 사실 스프링 데이터 jpa가 제공하는 기능들은 제약이 커서 실무에서 사용하기 쉽지 않다. 하여 간단히 소개하고, 왜 부족한지 알아보자. 1. 인터페이스 지원 - QuerydslPredicateExecutor 아래가 스프링 데이터 jpa QuerydslPredicateExecutor 인터페이스이다. public interface QuerydslPredicateExecutor { Optional findById(Predicate predicate); Iterable findAll(Predicate predicate); long count(Predicate predicate); boolean exists(Predicate predicate); // _ more functionality omitted. } 직접.. 2022. 1. 31.
Querydsl 16 - 페이징 컨트롤러 개발 이번에는 이전의 포스트에서 학습한 페이징을 사용하는 컨트롤러를 개발해보자. 컨트롤러에 아래와 같이 추가하고 요청을 날려보자. @RequiredArgsConstructor @RestController public class MemberController { private final MemberJpaReposiotory memberJpaReposiotory; private final MemberRepository memberRepository; @GetMapping("/v2/members") public Page searchMemberV2(MemberSearchCondition condition, Pageable pageable) { return memberRepository.searchPageSimple(.. 2022. 1. 30.
Querydsl 15 - data jpa + query dsl 페이징 이번에는 Query dsl을 사용한 동적쿼리와 스프링 데이터 jpa가 제공하는 편리한 페이징 기능을 함께 사용하는 방법을 알아보자. 이전 포스트에서 만든 MemberRepositoryCustom 인터페이스에 아래와 같은 두개의 동적 페이징 메서드를 추가한다. public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); /* 아래 두개 추가 */ Page searchPageSimple(MemberSearchCondition condition, Pageable pageable); Page searchPageComplex(MemberSearchCondition condition, Pageable pageable);.. 2022. 1. 30.
Querydsl 14 - data jpa + query dsl 리포지토리 간단한 정적인 쿼리들은 스프링 데이터 JPA만을 사용하여 가능하지만, 동적인 쿼리를 위해서는 Query dsl이 필요하다. 하여 이 둘을 같이 쓸 필요가 있는데, 스프링 데이터 JPA를 사용한 리포지토리는 JpaRepository를 extends하여 만들어지고, Querydsl은 일반적인 class를 사용하여 만들어진다. 하여 서비스 계층에서 Repository를 사용할 때 두 개의 리포지토리를 주입 받아야 하는 것이다. 하나의 리포지토리만 주입받아 사용하기 위한 방법을 알아보자. 먼저 아래와 같은 리포지토리 인터페이스가 있다고 하자. public interface MemberRepositoryCustom { List search(MemberSearchCondition condition); } 위의 se.. 2022. 1. 30.