느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라
article thumbnail
Published 2021. 8. 29. 23:02
[JPA] Query DSL 사용해보기 IT/JPA

 

현재 JPA공부를 하고있고, 현재는 객체지향 쿼리언어라는 챕터에 와있다. 여기서 QueryDSL이라는 것을 배우려 하는데, QueryDSL을 사용하면 Criteria JPQL보다 더 쉽게 코드를 작성할 수 있고 직관적이며 같은 기능을 제공한다고 한다. 

 

build.gradle에 아래와 같은 설정을 세팅한다.

plugins {
    id 'java'
    id "com.ewerk.gradle.plugins.querydsl" version "1.0.10"
}

//querydsl 추가 시작
def querydslVersion = '4.3.1'
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}

sourceSets {
    main.java.srcDir querydslDir
}

configurations {
    querydsl.extendsFrom compileClasspath
}

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

// ... 생략 ...

dependencies {
// ... 생략 ...
    implementation "com.querydsl:querydsl-jpa:${querydslVersion}"
    implementation "com.querydsl:querydsl-apt:${querydslVersion}"
    implementation "com.querydsl:querydsl-core:${querydslVersion}"

    annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion
    annotationProcessor group: 'com.querydsl', name: 'querydsl-apt', version: querydslVersion, classifier: 'jpa'

}

test {
    useJUnitPlatform()
}

clean {
    delete file('src/main/generated') // 인텔리제이 Annotation processor 생성물 생성위치
}

 

 

Task > other > compileQuerydsl을 누른다.

 

 

이러면, 내가 만든 Entity 객체에 대한 Q클래스가 만들어 진 것을 확인할 수 있다. 

 

 

    private static void logic(EntityManager em)
    {
        JPAQuery<Member> query = new JPAQuery<>(em);
        QMember qMember = new QMember("m");
        List<Member> members = query.from(qMember)
                .where(qMember.name.eq("주현태"))
                .orderBy(qMember.age.desc())
                .fetch();

        System.out.println("회원리스트 출력 : " + members);
    }

이를 이용해서, 회원리스트를 출력하는 간단한 예제를 사용해 보았다. 

 

다음과 같이 정상적으로 output 이 출력되는 것을 확인할 수 있었다.

 

profile

느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

@주현태

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!