강의

멘토링

로드맵

Cộng đồng Hỏi & Đáp của Inflearn

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Trong thực tế! Truy vấn

Querydsl thiết lập và kiểm tra

SpringBoot 4.X에서의 Querydsl 설정

Viết

·

40

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

Quiz

Spring Boot 프로젝트 초기 설정 시, Lombok과 H2 데이터베이스를 사용하는 주된 목적은 무엇일까요?

애플리케이션 성능을 최적화하기 위해서

개발 편의성 증대 및 테스트 환경 간소화를 위해서

보안 기능을 강화하고 사용자 인증을 처리하기 위해서

빅데이터 분석 및 고급 보고서 기능을 제공하기 위해서

Câu trả lời 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. 관련 게시물 및 참고자료:

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

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

Không có người viết

Bài viết có thông tin người viết đã bị xóa.

Đặt câu hỏi