[Springboot] QueryDsl 적용

Ming·2023년 3월 1일
0

Springboot

목록 보기
2/3

Query DSL

QueryDsl은 정적 타입을 이용해서 SQL과 같은 쿼리를 생성할 수 있도록 해주는 프레임워크이다.

JPA가 기본적으로 제공해주는 기능을 사용하더라도, 원하는 조건의 데이터를 수집하기 위해서는 필연적으로 JPQL을 작성하게 된다. 간단한 로직을 구현할 때는 상관없지만 복잡한 로직의 경우 쿼리가 길어진다. 또한 쿼리를 실행하기 전까지 에러를 발견할 수 없다.

QueryDSL장점

  1. 문자가 아닌 코드로 쿼리를 작성함으로써, 컴파일 시점에 문법 오류를 쉽게 확인할 수 있다.
  2. 자동 완성 등 IDE의 도움을 받을 수 있다.
  3. 동적인 쿼리 작성이 편리하다.
  4. 쿼리 작성 시 제약 조건 등을 메서드 추출을 통해 재사용할 수 있다.

QueryDsl 설정

💡 버전
springboot 3.0.1
java 17

래퍼런스를 참조해서 querydsl denpendency를 추가하려 하는데 springboot 3.0 이상 버전에서는 기존과는 다르게 설정해주어야했다.

build.gradle

dependencies {
    //...
    //querydsl dependencies 추가(스프링부트 3.0 이상)
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"

    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

QueryDslConfig

dependencies {
    //...
    //querydsl dependencies 추가(스프링부트 3.0 이상)
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"

    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"
}

0개의 댓글