이번 섹션에서는 [데이터 접근 기술 - Querydsl]에 대해서 알아보자.
👉 목차는 다음과 같다.
1) Querydsl 설정
2) Querydsl 적용
3) 정리
바로 하나씩 확인해보자.
build.gradle
추가 (1)build.gradle
추가 (2)
✔️ 참고
✔️ 코드 분석
JPAQueryFactory
가 필요하다. JPAQueryFactory
는 JPA 쿼리인 JPQL을 만들기 때문에 EntityManager
가 필요하다.JdbcTemplate
을 설정하는 것과 유사하다.JPAQueryFactory
를 스프링 빈으로 등록해서 사용해도 된다.BooleanBuilder
를 사용해서 원하는 where
조건들을 넣어주면 된다.findAllOld
에서 작성한 코드를 깔끔하게 리팩토링 했다. 다음 코드는 누가 봐도 쉽게 이해할 수 있을 것이다.where(A,B)
에 다양한 조건들을 직접 넣을 수 있는데, 이렇게 넣으면 AND
조건으로 처리된다. 참고로 where()
에 null
을 입력하면 해당 조건은 무시한다.likeItemName()
, maxPrice()
를 다른 쿼리를 작성할 때 재사용 할 수 있다는 점이다. 쉽게 이야기해서 쿼리 조건을 부분적으로 모듈화 할 수 있다. 자바 코드로 개발하기 때문에 얻을 수 있는 큰 장점이다.
👉 이제 설정하고 실행해보자.
QuerydslConfig
를 사용하도록 변경했다.ItemRepositoryTest
를 통해서 리포지토리가 정상 동작하는지 확인해보자.ItemServiceApplication
를 실행해서 애플리케이션이 정상 동작하는지 확인해보자.Querydsl
은 별도의 스프링 예외 추상화를 지원하지 않는다. 대신에 JPA에서 학습한 것 처럼 @Repository
에서 스프링 예외 추상화를 처리해준다.Querydsl 장점
likeItemName(itemName)
, maxPrice(maxPrice)
메서드를 다른 쿼리에서도 함께 사용할 수 있다.Querydsl을 사용해서 자바 코드로 쿼리를 작성하는 장점을 경험해보았다. 그리고 동적 쿼리 문제도 깔끔하게 해결해보았다. Querydsl은 이외에도 수많은 편리한 기능을 제공한다. 예를 들어서 최적의 쿼리 결과를 만들기 위해서 DTO로 편리하게 조회하는 기능은 실무에서 자주 사용하는 기능이다. JPA를 사용한다면 스프링 데이터 JPA와 Querydsl은 실무의 다양한 문제를 편리하게 해결하기 위해 선택하는 기본 기술이라 생각한다.
강의를 듣고 정리한 글입니다. 코드와 그림 등의 출처는 김영한 강사님께 있습니다.