Querydsl이란 정적 타입을 이용해서 SQL등의 쿼리를 생성해주는 오픈소스 프레임워크입니다.
(하이버네이트 쿼리 언어의 쿼리를 타입에 안전하게 생성 및 관리해주는 프레임워크)
문자가 아닌 코드로 쿼리를 작성함으로써, 컴파일 시점에 문법 오류를 쉽게 확인할 수 있습니다.
동적쿼리 작성이 편리하다는 장점이 있습니다.
JPA로는 복잡한 쿼리, 동적 쿼리를 구현하는 데 있어 한계가 있기때문에 Querydsl을 사용합니다.
따라서, 복잡한 동적 쿼리를 사용해야 할 때 QueryDSL을 사용하며, 단순할 경우에는 Spring Data JPA를 활용합니다.
Querydsl을 사용하기 위해서는, Gradle 설정 및 사용법 등을 익혀야합니다.
스트링부트 2.X와 3.0부터는 설정법이 다르니 꼭 확인해주세요!
저는 3버전 입니다.
1. build.gradle에 dependencies 추가
dependencies {
implementation "com.querydsl:querydsl-jpa:${querydslVersion}:jakarta"
annotationProcessor "com.querydsl:querydsl-apt:${querydslVersion}:jakarta"
annotationProcessor "jakarta.annotation:jakarta.annotation-api"
annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}
2. Querydsl 설정부
def querydslSrcDir = 'src/main/generated'
3. gradle clean시 QClass 디렉토리 삭제
clean {
delete file(querydslSrcDir)
}
4. 버전을 명시적으로 설정해줍니다.
ext {
set('springCloudVersion', "2023.0.3")
set('querydslVersion', "5.0.0") // QueryDSL 버전 명시적으로 설정
}
5. compile.java
(코드에 오류가 있으면 제대로 되지않으니 오류있는지 없는지 확인 할 것!)
오른쪽 탭 Gradle로 들어가줍니다.
Tasks > other > comile.java 클릭 -> Q객체가 만들어진 것을 확인할 수 있습니다.
6. Q파일 생성
7. querydsl config 파일을 만들어줍니다.
public class OrderApplicationQueryDslConfig {
public OrderApplicationQueryDslConfig() {
}
@Bean
JPAQueryFactory jpaQueryFactory(EntityManager em) {
return new JPAQueryFactory(em);
}
}
'개발관련' 카테고리의 다른 글
Docker 란 무엇일까 ? (0) | 2024.08.13 |
---|---|
Spring Boot Redis Cache 사용 (0) | 2024.08.08 |
인메모리 데이터 베이스(1) (0) | 2024.08.05 |
MSA(2) 로드밸런싱, 서킷브레이커, API GW, 보안구성 (0) | 2024.08.02 |
MSA란 무엇일까 ? (2) | 2024.08.01 |