개발/JPA

[Querydsl] 스프링 부트에 Querydsl 설정하기

highright96 2021. 7. 14.

build.Gradle에 Querydsl 설정 추가

플러그인 추가

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

 

의존성 추가

dependencies {
	...
    implementation 'com.querydsl:querydsl-jpa'
    ...
}

 

그 외 설정

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 설정 확인

Q타입 생성 확인

Hello 클래스 생성

@Entity
@Getter
@Setter
public class Hello {

    @Id
    @GeneratedValue
    private Long id;
}

 

Querydsl 컴파일

1. Gradle -> Tasks -> build -> clean

2. Gradle -> Tasks -> other -> complieQuerydsl

 

또는

 

콘솔에 다음 명령어 실행

./gradlew clean complieQuerydsl

 

Q타입 생성 완료

build -> generated -> querydsl -> 프로젝트 경로(build.gradle에 설정한 경로)에 QHello 클래스 파일이 생성되었으면 완료

 

Querydsl 동작 확인

간단한 테스트 작성

    @Test
    void contextLoads() {
        Hello hello = new Hello();
        em.persist(hello);

        JPAQueryFactory queryFactory = new JPAQueryFactory(em);
        
        /*
        QHello 생성자 안의 'h'는 같은 테이블을 조인할 경우 구분을 위함이다. 
        현재 테스트에서는 큰 의미는 없다.
        */
        QHello qHello = new QHello("h");

        Hello result = query.selectFrom(qHello).fetchOne();
                        
        assertThat(result).isEqualTo(hello);
        assertThat(result.getId()).isEqualTo(hello.getId());
    }

 

테스트 성공

 

참고

김영한님의 실전! Querydsl

김영한님의 자바 ORM 표준 JPA 프로그래밍

댓글