JPQL은 JPA에서 제공하는 가장 중요한 객체지향 쿼리 언어이다.
JPQL 특징
예를 들면 아래의 select문과 같다. Item이란 테이블이 아니라, Item 객체를 대상으로 검색한다.
Querydsl은 JPQL을 편하게 작성할 수 있게 도와주는 JPQL 빌더 역할을 한다.
오픈 소스이므로 라이브러리를 설치해야 한다.
build.gradle에 아래 부분을 추가해준다.
implementation 'com.querydsl:querydsl-jpa'
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
Settings를 IntelliJ로 둔다.
QClass가 src/main/generated경로로 생성된다.
Gradle로 하면 build/generated/sources/annotationProcessor/java/main경로에 생성된다.
프로젝트에 Querydsl 5버전을 사용했다.
Querydsl 5버전이 '자바 ORM 표준 JPA 프로그래밍'에 나온 3버전과 달라서, 문법이 변경되었다. 변경된 기본 문법은 여기에 자세히 정리되어있다.
BooleanBuilder를 사용하면 특정 조건에 따른 동적 쿼리를 편리하게 생성할 수 있다.
고객명(MemberName)과 주문상태(OrderStatus) 유무에 따라 동적으로 쿼리를 생성한다.
StringUtils는 org.springframework.util.StringUtils 이다.
StringUtils.hasText 메소드는 문자열의 내용이 없거나, null이면 false를 반환한다.
StringUtils의 메소드에 관한 정리는 여기를 참고하면 된다.