실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기

Ch04. 요구사항 추가(책 통계, QueryDSL) - QueryDSL 도입하기

webmaster 2022. 11. 8. 00:22
728x90

기술적인 요구사항

  • 현재 사용하는 JPQL은 몇 가지 단점이 있다.
  • QueryDSL을 사용해 단점을 극복하자

@Query을 단점

  • 문자열로 쿼리를 작성하기 때문에 버그를 찾기 어렵다.
  • JPQL문법이 일반 SQL과 조금 달라 복잡한 쿼리를 작성할 때마다 찾아봐야 한다.
  • 조건이 복잡한 동적쿼리를 작성할 때 함수가 계속 늘어난다.(동적 쿼리 작성이 어렵다)
  • 프로덕션 코드 변경(도메인 코드 변경)에 취약하다
  • 함수 이름 구성에 제약이 있다

QueryDSL은 코드로 쿼리를 작성하게 해주는 도구로 개발자가 편리하게 코드를 작성하도록 도와준다.

QueryDSL 설정

build.gradle

plugins {
   //....
    id 'org.jetbrains.kotlin.plugin.spring' version '1.6.21'
    id 'org.jetbrains.kotlin.kapt' version '1.6.21'
}

//...

dependencies {
   	//...
    implementation 'com.querydsl:querydsl-jpa:5.0.0'
    kapt('com.querydsl:querydsl-apt:5.0.0:jpa')
    kapt('org.springframework.boot:spring-boot-configuration-processor')
    //...
}
//...
  • 해당 코드 추가후 build를 하면 build 밑에 generated 밑에 Q파일이 생긴다(@Entity가 붙은 클래스에만)

 

728x90