강의

멘토링

로드맵

Inflearn コミュニティ Q&A

投稿者なし

この投稿の投稿者情報は削除されました。

本当! Querydsl

Querydsl 設定と検証

SpringBoot 4.X에서의 Querydsl 설정

作成

·

23

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붙은 엔티티들 불러올 수 있습니다.

 

참고하세요.

javajpaquerydsl

クイズ

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 타입의 엔티티가 생성되어 빌드 디렉토리에 나타나며, 테스트 환경에서도 필요한 대로 사용할 수 있도록 설정하셨습니다.

추가적인 참고 사항 및 개선점은 다음과 같습니다:

  1. Annotation Processing 활성화: IntelliJ에서 Querydsl의 Q타입이 생성된 후 올바르게 인식되려면, annotation processing이 활성화되어야 합니다.

    • IntelliJ IDEA에서 File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors로 이동하여 Enable annotation processing 옵션이 체크되어 있는지 확인하세요.
  2. Lombok 사용 확인: 이미 충분히 설정되어 있지만, 간혹 경로 문제가 발생할 수 있으니, Lombok 설정도 확인해 주시고, 필요한 경우 cleanbuild를 다시 수행해보세요.

  3. Gradle Sync 및 Refresh: 작성하신 build.gradle 파일에서 설정을 수정하셨다면, IntelliJ에서 Gradle 변경 사항을 강제로 반영할 수 있도록 Gradle > Refresh All Gradle Projects를 클릭하여 반영되었는지 확인하세요.

  4. 관련 게시물 및 참고자료:

위 자료들을 확인하시어 설정 과정에서 발생할 수 있는 다양한 문제에 대한 컨텍스트를 얻고 문제 해결에 도움이 되시길 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

投稿者なし

この投稿の投稿者情報は削除されました。

質問する