QueryDSL 2.7 버전 설정 방법

2024. 3. 5. 13:03JPA/Querydsl

 예전 프로젝트들을 살펴보면서 기존 코드를 개선해보면 어떨까하는 생각이 들어 코드를 다시 살펴보았다. 그 중에서 동적으로 쿼리를 작성했던 부분이 있었는데 그 부분을 QueryDSL로 바꿔볼려고 하니 설정하기가 너무 귀찮았다. 방법 그대로 따라가면 쉽게 해결이 된다.

 

1. build.gradle을 다음처럼 설정한다.

 

build.gradle

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

group = 'com.example'
version = '0.0.1-SNAPSHOT'

java {
    sourceCompatibility = '11'
}

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'mysql:mysql-connector-java:8.0.33'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.mysql:mysql-connector-j'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    // querydsl 추가
    implementation "com.querydsl:querydsl-jpa"
    implementation "com.querydsl:querydsl-core"
    implementation "com.querydsl:querydsl-collections"
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jpa" // querydsl JPAAnnotationProcessor 사용 지정
    annotationProcessor "jakarta.annotation:jakarta.annotation-api" // java.lang.NoClassDefFoundError (javax.annotation.Generated) 대응 코드
    annotationProcessor "jakarta.persistence:jakarta.persistence-api" // java.lang.NoClassDefFoundError (javax.annotation.Entity) 대응 코드
}

tasks.named('test') {
    useJUnitPlatform()
}

// Querydsl 설정부
def generated = 'src/main/generated'

// querydsl QClass 파일 생성 위치를 지정
tasks.withType(JavaCompile) {
    options.getGeneratedSourceOutputDirectory().set(file(generated))
}

// java source set 에 querydsl QClass 위치 추가
sourceSets {
    main.java.srcDirs += [ generated ]
}

// gradle clean 시에 QClass 디렉토리 삭제
clean {
    delete file(generated)
}

 

2. 아무 엔티티나 작성을 해놓고 build.gradle로 돌아와서 우측의 gradle에서 build 폴더의 buld 파일을 더블클릭 해준다. 그러면 설정에서 generated에 설정해놓은 폴더 경로에 Q타입의 엔티티가 새로 생성이 된다.

 

3. 새로 추가할 엔티티가 있다면 build.gradle에서맨 아래 있는 버튼을 누르고 다시 2번과정을 실행한다.

[ 참고 자료 ]

https://elastinn.tistory.com/11

'JPA > Querydsl' 카테고리의 다른 글

Querydsl - 중급 문법  (0) 2024.02.20
Querydsl - 기본 문법  (0) 2024.02.20