Spring-Data-JPA [7] Querydsl 설정 (gradle 7.x)
Querydsl을 세팅하기 전에 무엇인지 먼저 알아봅시다.
1. Querydsl이란?
타입에 안전한 방식으로 HQL(Hibernate Query Language)를 실행하기 위한 목적으로 만들어졌습니다. HQL를 작성하다 보면, String 연결 (ex= "select"+ ~~)을 이용하게 됩니다. 이는 가독성의 어려움으로 이어질 수 있습니다. 따라서 가독성과 타입에 안전하도록 도메인 모델로 변경했다. 도메인 모델로 변경함으로써, 도메인 변경이 직접적으로 쿼리에 반영되고, 쿼리 작성 과정에서도 자동완성 기능을 사용할 수 있습니다. 따라서 빠르고 안정적인 쿼리를 만들 수 있습니다.
1-1. Queryds 원칙
1. 타입 안정성(Type Safety): 도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성함으로써, 메서드 형태로 호출이 이루어져 타입에 안전합니다.
2. 일관성: 기반 기술에 상관없이 쿼리 경로와 오퍼레이션이 동일합니다. Query 인터페이스는 공통의 상위 인터페이스를 가집니다.
2. Springboot Querydsl 세팅을 위한 build.gradle 수정
2-1. Querydsl 버전 plugins 위에 추가
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
2-2. querydls 플러그인 plugins에 추가
plugins {
id 'org.springframework.boot' version '2.6.4'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'java'
// querydsl 플러그인 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
2-3. dependencies에 querydsl 관련 디펜던시 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-cache'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
implementation 'mysql:mysql-connector-java'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
// querydsl 디펜던시 추가
implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
}
2-4. querydsl 추가 설정
가장 밑에 적어줍니다.
// querydsl 사용할 경로 지정합니다. 현재 지정한 부분은 .gitignore에 포함되므로 git에 올라가지 않습니다.
def querydslDir = "$buildDir/generated/'querydsl'"
// JPA 사용여부 및 사용 경로 설정
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
// build시 사용할 sourceSet 추가 설정
sourceSets {
main.java.srcDir querydslDir
}
// querydsl 컴파일 시 사용할 옵션 설정
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
// querydsl이 compileClassPath를 상속하도록 설정
configurations {
compileOnly {
extendsFrom annotationProcessor
}
querydsl.extendsFrom compileClasspath
}
3. Build
위에서 Querydsl을 사용하기 위한 세팅은 모두 끝났습니다. 우측 gradle 탭에서 other -> compileQuerydsl을 누르시거나 애플리케이션을 실행시키면, Build가 됩니다. 위에서 지정한 querydslDir에 Q타입이란 것이 생깁니다.
QMember의 모습
지금까지 Querydsl 설정 방법을 알아봤습니다. 다음은 QueryDsl 사용법에 대해서 하나씩 알아보겠습니다.
'SpringBoot > JPA' 카테고리의 다른 글
Spring JPA @OneToOne N+1 문제 (Fetch = Lazy) (0) | 2022.11.29 |
---|---|
Spring-Data-JPA [8] Querydsl 사용 (0) | 2022.06.09 |
Spring-Data-JPA [6] Index 적용하기 (3) | 2022.05.16 |
Spring-Data-JPA [5] Fetch Join (0) | 2022.03.24 |
Spring-data-JPA [4] Update와 @Query (0) | 2022.03.23 |
댓글
이 글 공유하기
다른 글
-
Spring JPA @OneToOne N+1 문제 (Fetch = Lazy)
Spring JPA @OneToOne N+1 문제 (Fetch = Lazy)
2022.11.29 -
Spring-Data-JPA [8] Querydsl 사용
Spring-Data-JPA [8] Querydsl 사용
2022.06.09 -
Spring-Data-JPA [6] Index 적용하기
Spring-Data-JPA [6] Index 적용하기
2022.05.16 -
Spring-Data-JPA [5] Fetch Join
Spring-Data-JPA [5] Fetch Join
2022.03.24