Spring-Data-JPA [7] Querydsl 설정 (gradle 7.x)
Querydsl을 세팅하기 전에 무엇인지 먼저 알아봅시다.
1. Querydsl이란?
타입에 안전한 방식으로 HQL(Hibernate Query Language)를 실행하기 위한 목적으로 만들어졌습니다. HQL를 작성하다 보면, String 연결 (ex= "select"+ ~~)을 이용하게 됩니다. 이는 가독성의 어려움으로 이어질 수 있습니다. 따라서 가독성과 타입에 안전하도록 도메인 모델로 변경했다. 도메인 모델로 변경함으로써, 도메인 변경이 직접적으로 쿼리에 반영되고, 쿼리 작성 과정에서도 자동완성 기능을 사용할 수 있습니다. 따라서 빠르고 안정적인 쿼리를 만들 수 있습니다.
1-1. Queryds 원칙
1. 타입 안정성(Type Safety): 도메인 타입의 프로퍼티를 반영해서 생성한 쿼리 타입을 이용해서 쿼리를 작성함으로써, 메서드 형태로 호출이 이루어져 타입에 안전합니다.
2. 일관성: 기반 기술에 상관없이 쿼리 경로와 오퍼레이션이 동일합니다. Query 인터페이스는 공통의 상위 인터페이스를 가집니다.
2. Springboot Querydsl 세팅을 위한 build.gradle 수정
2-1. Querydsl 버전 plugins 위에 추가
buildscript { ext { queryDslVersion = "5.0.0" } }
2-2. querydls 플러그인 plugins에 추가
plugins { id 'org.springframework.boot' version '2.6.4' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' // querydsl 플러그인 추가 id "com.ewerk.gradle.plugins.querydsl" version "1.0.10" }
2-3. dependencies에 querydsl 관련 디펜던시 추가
dependencies { implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springframework.boot:spring-boot-starter-cache' implementation 'org.springframework.boot:spring-boot-starter-web' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' annotationProcessor 'org.projectlombok:lombok' implementation 'mysql:mysql-connector-java' testImplementation 'org.springframework.boot:spring-boot-starter-test' // querydsl 디펜던시 추가 implementation "com.querydsl:querydsl-jpa:${queryDslVersion}" implementation "com.querydsl:querydsl-apt:${queryDslVersion}" }
2-4. querydsl 추가 설정
가장 밑에 적어줍니다.
// querydsl 사용할 경로 지정합니다. 현재 지정한 부분은 .gitignore에 포함되므로 git에 올라가지 않습니다. def querydslDir = "$buildDir/generated/'querydsl'" // JPA 사용여부 및 사용 경로 설정 querydsl { jpa = true querydslSourcesDir = querydslDir } // build시 사용할 sourceSet 추가 설정 sourceSets { main.java.srcDir querydslDir } // querydsl 컴파일 시 사용할 옵션 설정 compileQuerydsl { options.annotationProcessorPath = configurations.querydsl } // querydsl이 compileClassPath를 상속하도록 설정 configurations { compileOnly { extendsFrom annotationProcessor } querydsl.extendsFrom compileClasspath }
3. Build
위에서 Querydsl을 사용하기 위한 세팅은 모두 끝났습니다. 우측 gradle 탭에서 other -> compileQuerydsl을 누르시거나 애플리케이션을 실행시키면, Build가 됩니다. 위에서 지정한 querydslDir에 Q타입이란 것이 생깁니다.


QMember의 모습

지금까지 Querydsl 설정 방법을 알아봤습니다. 다음은 QueryDsl 사용법에 대해서 하나씩 알아보겠습니다.
'SpringBoot > JPA' 카테고리의 다른 글
Spring JPA @OneToOne N+1 문제 (Fetch = Lazy) (0) | 2022.11.29 |
---|---|
Spring-Data-JPA [8] Querydsl 사용 (0) | 2022.06.09 |
Spring-Data-JPA [6] Index 적용하기 (3) | 2022.05.16 |
Spring-Data-JPA [5] Fetch Join (0) | 2022.03.24 |
Spring-data-JPA [4] Update와 @Query (0) | 2022.03.23 |
댓글
이 글 공유하기
다른 글
-
Spring JPA @OneToOne N+1 문제 (Fetch = Lazy)
Spring JPA @OneToOne N+1 문제 (Fetch = Lazy)
2022.11.29 -
Spring-Data-JPA [8] Querydsl 사용
Spring-Data-JPA [8] Querydsl 사용
2022.06.09 -
Spring-Data-JPA [6] Index 적용하기
Spring-Data-JPA [6] Index 적용하기
2022.05.16 -
Spring-Data-JPA [5] Fetch Join
Spring-Data-JPA [5] Fetch Join
2022.03.24
댓글을 사용할 수 없습니다.