본문 바로가기

Project/Table_of_Organization_Management_System

Jpa - QueryDsl 준비하기

728x90

Jpa 와 QueryDsl 은 추가할 의존성도 많고 QueryDsl 같은경우 빌드뒤 생성된 Q파일을 사용하기에 따로 빼서 관리하는 것이 좋다.

Jpa 와 QueryDsl 관련 gradle 설정을 따로 외부로 빼고, 사용할 domain 모듈에서 파일을 불러와 사용해 보도록 하겠다.

 

Root 모듈에 jpa.gradle 파일을 만들자

apply plugin: "com.ewerk.gradle.plugins.querydsl"
apply plugin: "idea"

def querydslVersion = '5.0.0'

def queryDslDir = "src/main/generated" // Q파일 생성위치
querydsl {
    library = "com.querydsl:querydsl-apt:${querydslVersion}" // 사용할 AnnotationProcessor 정의
    jpa = true
    querydslSourcesDir = queryDslDir
}

compileQuerydsl {
    delete file(queryDslDir)
    options.annotationProcessorPath = configurations.querydsl
}

configurations {
    querydsl.extendsFrom compileClasspath
}

dependencies {

    implementation ('org.springframework.boot:spring-boot-starter-data-jpa')

    implementation group: 'com.querydsl', name: 'querydsl-jpa', version: querydslVersion
    implementation group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion
    implementation group: 'com.querydsl', name: 'querydsl-core', version: querydslVersion

    annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion
    annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion, classifier: 'jpa'
    annotationProcessor("jakarta.persistence:jakarta.persistence-api")
    annotationProcessor("jakarta.annotation:jakarta.annotation-api")


}

sourceSets {
    main {
        java {
            srcDirs = ["src/main/java", queryDslDir]
        }
    }
}

compileJava.doFirst {
    delete queryDslDir
}

idea {
    module {
        sourceDirs += file(queryDslDir)
    }
}

 

 

 

domain 모듈 build.gradle 에 import 해준다.

build.gradle

apply from: '../jpa.gradle'

 

 

그리고 마지막으로 gradle build 시 queryDsl plugin 을 찾아 build 할 수 있도록 buildscript 에 다음을 추가해 준다.

buildscript {
    ext {
    ...
    }

    repositories {
        ...
        gradlePluginPortal() // maven { url "https://plugins.gradle.org/m2/" }
    }

    dependencies {
		...
        classpath 'gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10'
    }
}

 

이제 compileQueryDsl 를 통해 Q파일을 생성할 수 있다.

 

 

참고 글

참고 블로그1 , 참고 블로그2 , 참고 블로그3

728x90