QueryDSL이라.. 이 녀석도 처음임..ㅎ
우선 세팅을 먼저 진행해보자!
Gradle 추가
//QueryDSL의 버전 //plugin 보다 앞에 둘 것
buildscript {
ext {
queryDslVersion = "5.0.0"
}
}
dependencies {
//QueryDSL JPA 라이브러리
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
// QueryDSL APT(Annotation Processing Tool)
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
//Jakarta Annotation API
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
// Jakarta Persistence API
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}
//Q타입 클래스 디렉토리 경로
def generated = 'src/main/generated'
//'generated' 디렉토리에 저장
tasks.withType(JavaCompile) {
options.getGeneratedSourceOutputDirectory().set(file(generated))
}
//generated 디렉토리를 메인 소스에 추가하여 컴파일에 포함
sourceSets {
main.java.srcDirs += [ generated ]
}
//clean 시 generated 디렉토리를 삭제
clean {
delete file(generated)
}
- gradle clean > build
- Q클래스 생성된 걸 확인할 수 있음
- Q클래스 생성된 걸 확인할 수 있음
.gitignore
src/main/generated
- src/main/generated 디렉토리는 자동으로 생성된 파일들이므로, 버전 관리에 포함할 필요가 없음
QueryDslConfig 생성
@Configuration
@RequiredArgsConstructor
public class QueryDslConfig {
private final EntityManager em;
@Bean
public JPAQueryFactory jpaQueryFactory(){
return new JPAQueryFactory(em);
}
}