Inflearn コミュニティ Q&A
投稿者なし
この投稿の投稿者情報は削除されました。
SpringBoot 4.X에서의 Querydsl 설정
作成
·
24
0
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.5'
id 'io.spring.dependency-management' version '1.1.7'
id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}
group = 'study'
version = '0.0.1-SNAPSHOT'
description = 'querydsl202604'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-h2console'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// test 롬복
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
// Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}
tasks.named('test') {
useJUnitPlatform()
}
clean {
delete file('src/main/generated')
}
// querydsl 추가
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile
querydsl {
jpa = true
querydslSourcesDir = querydslDir
}
sourceSets {
main.java.srcDir querydslDir
}
configurations {
querydsl.extendsFrom compileClasspath
}
compileQuerydsl {
options.annotationProcessorPath = configurations.querydsl
}이렇게 하면 build 폴더에도 Q붙은 엔티티들 나오고요.
테스트 코드 짤 때도 Q붙은 엔티티들 불러올 수 있습니다.
참고하세요.
クイズ
Spring Boot 프로젝트 초기 설정 시, Lombok과 H2 데이터베이스를 사용하는 주된 목적은 무엇일까요?
애플리케이션 성능을 최적화하기 위해서
개발 편의성 증대 및 테스트 환경 간소화를 위해서
보안 기능을 강화하고 사용자 인증을 처리하기 위해서
빅데이터 분석 및 고급 보고서 기능을 제공하기 위해서
回答 2
2
잘못 올려서 삭제하려 했더니 글이 삭제되진 않았네요.
완성본 다시 올립니다.
plugins {
id 'java'
id 'org.springframework.boot' version '4.0.5'
id 'io.spring.dependency-management' version '1.1.7'
}
group = 'study'
version = '0.0.1-SNAPSHOT'
description = 'querydsl202604'
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-h2console'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-webmvc'
implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-data-jpa-test'
testImplementation 'org.springframework.boot:spring-boot-starter-webmvc-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
// test 롬복
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
// Querydsl 추가
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jakarta'
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}
tasks.named('test') {
useJUnitPlatform()
}
// generated 소스 경로를 명시적으로 지정
def generatedDir = "src/main/generated"
sourceSets {
main.java.srcDir generatedDir
}
tasks.withType(JavaCompile).configureEach {
options.generatedSourceOutputDirectory.set(file(generatedDir))
}
clean {
delete file(generatedDir)
}0
안녕하세요, 인프런 AI 인턴입니다.
Bruce Han님께서 올려주신 Spring Boot 4.X 환경에서의 Querydsl 설정에 대해 주어진 코드 내용을 검토하고 적절한 개선 및 참고 자료를 제안해드리겠습니다.
Bruce Han님께서 작성하신 설정은 Querydsl을 활용하여 Spring Boot 프로젝트에서 빌드 및 테스트 환경을 설정하는 데 필요한 주요 조건을 포함하고 있습니다. Q 타입의 엔티티가 생성되어 빌드 디렉토리에 나타나며, 테스트 환경에서도 필요한 대로 사용할 수 있도록 설정하셨습니다.
추가적인 참고 사항 및 개선점은 다음과 같습니다:
Annotation Processing 활성화: IntelliJ에서 Querydsl의 Q타입이 생성된 후 올바르게 인식되려면, annotation processing이 활성화되어야 합니다.
- IntelliJ IDEA에서
File>Settings>Build, Execution, Deployment>Compiler>Annotation Processors로 이동하여Enable annotation processing옵션이 체크되어 있는지 확인하세요.
- IntelliJ IDEA에서
Lombok 사용 확인: 이미 충분히 설정되어 있지만, 간혹 경로 문제가 발생할 수 있으니, Lombok 설정도 확인해 주시고, 필요한 경우
clean과build를 다시 수행해보세요.Gradle Sync 및 Refresh: 작성하신
build.gradle파일에서 설정을 수정하셨다면, IntelliJ에서 Gradle 변경 사항을 강제로 반영할 수 있도록Gradle>Refresh All Gradle Projects를 클릭하여 반영되었는지 확인하세요.관련 게시물 및 참고자료:
- “개발하고 있는 프로젝트에 Querydsl을 적용해보려고 테스트 중입니다.”: Querydsl을 설정하고 나서 발생하는 다양한 문제 해결 사례입니다.
- “스프링부트 2.6.7, java 8, gradle 7.4.X querydsl 설정 방법 공유”: Querydsl 설정 중 발생할 수 있는 다양한 이슈 해결 방법이 게시되어 있습니다.
- “내가 쓴 SpringBoot 2.7 에서의 queryDsl 설정 방법”: Querydsl 설정에 대한 다른 접근 방법과 설명이 있어, 다른 경우의 문제 해결에 도움이 될 수 있습니다.
- “개발하고 있는 프로젝트에 Querydsl을 적용해보려고 테스트 중입니다.”: Querydsl을 설정하고 나서 발생하는 다양한 문제 해결 사례입니다.
위 자료들을 확인하시어 설정 과정에서 발생할 수 있는 다양한 문제에 대한 컨텍스트를 얻고 문제 해결에 도움이 되시길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





