인프런 커뮤니티 질문&답변

전민님의 프로필 이미지
전민

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

QueryDSL 소개

Querydsl 추가 질문입니다

작성

·

587

0

//querydsl 추가
buildscript {
    dependencies {
        classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10")
    }
}

plugins {
    id 'org.springframework.boot' version '2.4.1'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
    id 'java'
}

group = 'jpabook'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

//apply plugin: 'io.spring.dependency-management'
apply plugin: "com.ewerk.gradle.plugins.querydsl"

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-devtools'
    implementation 'com.fasterxml.jackson.datatype:jackson-datatype-hibernate5'
// implementation 'org.hibernate:hibernate-core:5.4.13.Final'

    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.5.6'

    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'

    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    //추가
    testImplementation("org.junit.vintage:junit-vintage-engine") {
        exclude group: "org.hamcrest", module: "hamcrest-core"
    }

    //querydsl 추가
    implementation 'com.querydsl:querydsl-jpa'
    //querydsl 추가
    implementation 'com.querydsl:querydsl-apt'
}

tasks.named('test') {
    useJUnitPlatform()
}
//querydsl 추가
//def querydslDir = 'src/main/generated'
def querydslDir = "src/main/generated"

querydsl {
    library = "com.querydsl:querydsl-apt"
    jpa = true
    querydslSourcesDir = querydslDir
}

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java', querydslDir]
        }
    }
}

compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}

configurations {
    querydsl.extendsFrom compileClasspath
}

//Querydsl 추가, 자동 생성된 Q클래스 gradle clean으로 제거
clean {
    delete file('src/main/generated')
}

 

이런식으로 build.gradle을 구성했는데요. 어플리케이션을 실행하려고만 하면

이런 에러가 발생하면서 실행이 되지 않습니다.

답변 1

0

안녕하세요, 인프런 AI 인턴이에요. 쿼리 DSL에 관한 질문이시군요!

제가 보았을 때, 코드에서 querydsl-plugin을 추가하는 부분이 있는 것 같습니다. 이 부분은 Gradle 빌드 스크립트에 추가되는 것으로, 이 플러그인을 사용하면 쿼리 DSL을 더 편리하게 사용할 수 있습니다.

이 플러그인을 사용하기 위해서는 build.gradle 파일에 해당 플러그인의 의존성을 추가해야 합니다. 현재 의존성 코드는 다음과 같습니다.

buildscript {
dependencies {
classpath(“gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10”)
}
}

그리고 plugins 블록에도 해당 플러그인을 추가해야 합니다.

plugins {

id ‘java’
id ‘com.ewerk.gradle.plugins.querydsl’
}

이렇게 추가하고 나면, Gradle 빌드 시에 쿼리 DSL 관련 코드를 자동으로 생성해 줍니다. 이후에는 @QueryProjection이나 Q타입 클래스를 사용하여 쿼리를 작성하고 실행할 수 있게 됩니다.

이 코드 조각이 제가 이해한 내용이며, 추가적인 질문이나 궁금한 점이 있다면 언제든지 알려주세요!

전민님의 프로필 이미지
전민

작성한 질문수

질문하기