0. 개요
- 이번 포스팅은 Query DSL에 대해서 간략하게 알아볼 예정이다.
- JPA를 조금 더 효율적으로 사용하고 싶다면 Query DSL에 대해서 알아보자.
https://github.com/querydsl/querydsl/tree/master/querydsl-jpa
1. Query DSL
a) Query DSL 이란?
- Query DSL은 오픈소스 프로젝트로 JPQL을 Java 코드로 작성할 수 있도록 하는 라이브러리다.
- 이전 포스팅에서 Criteria를 이용하여 Java로 쿼리를 작성하는 방법에 대해서 소개한 적이 있다.
- Criteria 기법은 사람이 사용할 방법이 안된다... 그래서 등장한 것이 Query DSL이다.
b) Query DSL의 사용
- Query DSL은 select, from , where 등 쿼리 작성에 필요한 키워드를 메서드 형식으로 제공한다.
- 다음 예시를 살펴보자.
// QueryDSL 이용한 메서드
public List<Order> findAll(OrderSearch orderSearch) {
JPAQueryFactory query = new JPAQueryFactory(em);
QOrder order = QOrder.order;
QMember member = QMember.member;
return query
.select(order)
.from(order)
.join(order.member, member) // 두번째 member는 별칭이다.
.limit(1000)
.fetch();
}
c) Query DSL 설치
- 빌드 자동화 도구를 무엇을 사용하냐에 따라 설치 방법이 상이하다.
- Grandle, Maven 등에 따라 QueryDSL 설치 방법을 구글에서 찾아보기를 권장한다.
- 아래의 설정 파일은 build.gradle 파일이다.
- 다음과 같이 QueryDSL을 설정할 수 있다.
buildscript {
dependencies {
classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10")
}
}
apply plugin: "com.ewerk.gradle.plugins.querydsl"
dependencies {
// query dsl
implementation 'com.querydsl:querydsl-jpa'
implementation 'com.querydsl:querydsl-apt'
}
//def querydslDir = "$buildDir/generated/querydsl"
def querydslDir = 'src/main/generated'
querydsl {
library = "com.querydsl:querydsl-apt"
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main {
java {
srcDirs = ['src/main/java', querydslDir]
}
}
}
compileQuerydsl{
options.annotationProcessorPath = configurations.querydsl
}
configurations {
querydsl.extendsFrom compileClasspath
}
'Back-end > JPA 개념' 카테고리의 다른 글
Spring Data JPA란? (0) | 2022.06.07 |
---|---|
OSIV(Open Session In View) (0) | 2022.06.07 |
API 조회 성능 최적화 - 컬렉션(DTO 직접 조회) (0) | 2022.06.04 |
API 조회 성능 최적화 - 컬렉션(Fetch Join + 페이징 + Batch Size) (0) | 2022.06.03 |
API 조회 성능 최적화 - 컬렉션(Fetch Join, distinct) (0) | 2022.06.02 |
댓글