QueryDSL 사용에 앞서 설정을 해주도록 하겠습니다.
기본적으로 QueryDSL은 start.io 에서 dependency를 제공하지 않기 때문에 사용하기 위해서는 직접 설정해주어야 합니다.
build.gradle 설정
plugins
//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
dependency
//querydsl 추가
implementation 'com.querydsl:querydsl-jpa'
설정코드
plugin과 같이 맞물려서 빌드될때
SourceSets
querydslDir이 있으면 인텔리제이같은 IDE들이 자동으로 소스폴더에 import 해줍니다.
configurations
querydsl이 compileClasspath에 집어 넣습니다.
compileQuerydsl
annotation processor가 같이 돌면서 Q파일을 생성합니다.
설정 코드는 멀티모듈, 싱글모듈 등 여러 환경에 따라 많이 바뀔 수 있습니다.
설정 안될시에는 열심히 구글링하기 또는 김영한님 QueryDSL 게시판에 질문하면 좋습니다.
//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝
build.grade 전체 코드
plugins {
id 'org.springframework.boot' version '2.5.0'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
//querydsl 추가
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
id 'java'
}
group = 'study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
//querydsl 추가
implementation 'com.querydsl:querydsl-jpa'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
test {
useJUnitPlatform()
}
//querydsl 추가 시작
def querydslDir = "$buildDir/generated/querydsl"
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}
//querydsl 추가 끝
Q파일 생성
QueryDSL은 생성된 엔티티에 대해 QueryDSL 실행을 위한 Q파일을 생성합니다.
Q파일이 정상적으로 생성되는지 확인해봅니다.
Hello class를 생성합니다.

package study.querydsl.entity;
import lombok.Getter;
import lombok.Setter;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
@Getter
@Setter
public class Hello {
@Id @GeneratedValue
private Long id;
}
현재 프로젝트 파일에는 build 폴더가 없습니다.

compileQuerydsl을 더블클릭해서 엔티티를 querydsl로 컴파일 합니다.

프로젝트 폴더에 build/generated 경로에서 Hello 엔티티와 똑같은 경로로 Hello 엔티티의 Q파일이 생성되었습니다.

build/generated 경로는 build.gradle에서 설정해준 경로입니다.
def querydslDir = "$buildDir/generated/querydsl"
주의점
- Querydsl compile시 생긴 파일들은 git으로 관리하면안됩니다.
(각 환경의 설정마다 Q파일이 다르게 생성되기 때문입니다.) - 인텔리제이에서는 build 폴더를 자동으로 ignore합니다. 그래서 build.gradle에서 경로 설정을 build/generated로 한 것입니다.
'Web > QueryDSL' 카테고리의 다른 글
[QueryDSL] EP5. 실무활용-스프링 데이터 JPA와 Querydsl (0) | 2021.06.17 |
---|---|
[QueryDSL] EP4. 실무활용-순수 JPA 리포지토리와 Querydsl (0) | 2021.06.16 |
[QueryDSL] EP3. 중급 문법 (0) | 2021.06.14 |
[QueryDSL] EP2. 기본 문법 (0) | 2021.06.10 |