Spring Boot/QueryDSL
Spring Boot QueryDSL 개념
최-코드
2024. 8. 10. 22:39
QueryDSL : DSL은 Domain Specific Language의 약자로 특정 영역에 특화된 언어를 말한다. 즉 QueryDSL은 쿼리 생성에 특화된 프레임워크를 의미한다.
QueryDSL 특징
- QueryDSL은 JPQL을 코드화 한 것이기 때문에 결과적으로 JPQL로 실행이 된다. 따라서 JPQL을 사용하든 QueryDSL을 사용하든 성능에서 차이가 없다.
- 1번에 이어서 결국 jpql이기 때문에 from 절에 서브쿼리를 사용할 수 없다. 즉, JPQL에서 안 되는 것은 QueryDSL에서도 안 된다고 보면 된다.
- 쿼리를 자바 코드로 작성할 수 있다. 이는 QClass를 통해 이루어진다.
- 문법 오류를 컴파일 시점에 잡을 수 있음
- 코드의 자동완성 기능 또한 이용할 수 있음
- 특정 부분을 함수로 빼서 재사용성 높일 수 있다.
- 동적 쿼리 문제를 해결할 수 있다.
- QClass 파일들에 대해 gitignore해줘야 한다. src/main/generated에 존재한다.
cf)QClass는 엔티티에 대해 메타 데이터를 가지고 있는 클래스를 말한다.
QueryDSL buld.gradle 설정
dependencies {
//quertDSL
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"
}
//gradle clean 시 QClass 삭제
clean {
delete file('src/main/generated')
}