Querydsl 설정

kmb·2022년 5월 26일
0

JPA

목록 보기
6/7
post-thumbnail

쿼리메서드와 @Query는 선언할때 고정된 형태의 값을 가지지만 복잡한 조합을 위한 동적쿼리 처리는 못한다. 따라서 Querydsl을 사용하면 동적쿼리 처리가 가능하다.

Querydsl은 우리가 만든 entity클래스를 그대로 사용하는것이 아니라 Q도메인을 이용한다.
Querydsl 라이브러리를 이용해서 entity 클래스를 Q도메인 클래스로 변환해야하는데 이를 위해 추가적인 설정이 필요하다.

build.gradle

// querydsl 추가
buildscript {
    ext {
        queryDslVersion = "5.0.0"
    }
}

plugins {

    // querydsl 추가
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'
}

dependencies {

    // querydsl 추가
    implementation "com.querydsl:querydsl-jpa:${queryDslVersion}"
    implementation "com.querydsl:querydsl-apt:${queryDslVersion}"
}

// querydsl 시작
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}

sourceSets {
    main.java.srcDir querydslDir
}

configurations {
    complieOnly {
        extendsFrom annotationProcessor
    }
    querydsl.extendsFrom compileClasspath
}

compileQuerydsl {
    options.annotationProcessorPath = configurations.querydsl
}
// querydsl 끝

이후에 gradle을 reload 한다음
compileQuerydsl 을 실행하고나면
위 그림과 같이 생성된 파일들이 모두 Q 타입으로 생성된다.

생성된 Q타입의 클래스들을 보면 내부적으로 선언된 필드(colmun)들이 변수 처리 된 것을 확인할 수 있다.

참고

  • 코드로 배우는 스프링부트 웹프로젝트 (책)
profile
꾸준하게

0개의 댓글