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
'실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기' 카테고리의 다른 글
| Ch04. 요구사항 추가(책 통계, QueryDSL) - UserLoanHistoryRepository 리펙토링 (1) | 2022.11.08 |
|---|---|
| Ch04. 요구사항 추가(책 통계, QueryDSL) - QueryDSL 사용하기 (0) | 2022.11.08 |
| Ch04. 요구사항 추가(책 통계, QueryDSL) - 애플리케이션 대신 DB로 기능 구현 (0) | 2022.11.08 |
| Ch04. 요구사항 추가(책 통계, QueryDSL) - 책 통계 테스트 코드와 리펙토링 (0) | 2022.11.07 |
| Ch04. 요구사항 추가(책 통계, QueryDSL) - 책 통계 요구사항 추가 (0) | 2022.11.07 |