-
spring boot Gradle 에 Querydsl 설정Spring boot 2021. 11. 9. 18:18
what is QueryDSL ?
복잡한 동적 쿼리를 빌드하는데 객체지향적이며 오류가 발생하기 어려운 형태를 제공하는 라이브러리
why use QueryDSL ?
실 사용되는 비즈니스 로직에서는 동적쿼리가 대부분을 차지하는데 JPQL 로 작성하기 복잡한 동적쿼리를 코드 레벨에서 디버깅할 수 있고 복잡도를 낮추게 도와준다
* Hibernate 스펙에서는 JPQL (Java Persistence Query Language) 를 제안한다
1. 쿼리가 길어질수록 가독성이 떨어진다
2. JAVA 가 지향하는 객체지향과는 멀어진다3. 동적쿼리 작성의 복잡도가 높아진다
4. code level 에서 디버깅 할 수 없다
5. mybatis 보다 단순할 수 있지만 근본적인 동적쿼리 문제 해결이 어렵습니다
- JPQL example
JPQL query - mybatis example
mybatis query - QueryDSL example
querydsl query IntelliJ version : 2021.1.3
spring-boot version : 2.5.0
embeded tomcat version : 9.0.46
gradle version : 7.0.2
querydsl version : 4.4.0
jakarta.persistence-api version : 2.2.3
jakarta.annotation-api version : 1.3.5
spring default depency Querydsl 사용하기 위해 기본으로 추가되어야 하는 SpringDataJPA, SpringWeb
gradle querydsl dependency com.querydsl:querydsl-jpa 만 선언했을 때 QuerydslRepositorySupport나 QueryDslPredicateExecutor는 사용할 수 있지만, Qclass가 생성되지 않습니다.
com.querydsl:querydsl-apt 선언했을 때 쿼리 타입(Q)를 생성할 때 필요한 라이브러리 입니다.
java.lang.NoClassDefFoundError 에러 발생할 때 jakarta.persistence:jakarta.persistence-api, jakarta.annotation:jakarta.annotation-api 를 annotationProcessor 추가합니다.
what is annotationProcessor ?Java 5 버전부터 사용된 Java 컴파일 옵션입니다Gradle 에서는 annotationProcessor 종속성 구성을 사용하여 올바른 컴파일 옵션을 Java에 전달하는 복잡성을 추상화 해줍니다.프로젝트 실행하면, 엔티티 클래스 앞에 Q가 붙은 이름의 쿼리 타입들이 생성된다
쿼리 타입들이 생성되는 위치
File > Setting > Build, Execution, Deployment > Build Tools > Gradle
IntelliJ Gradle Setting IntelliJ IDEA 사용하는 경우
src/main/generated경로로 생성됩니다.
Gradle 사용하는 경우
build/generated/sources/annotationProcessor/java/main경로에 생성됩니다.
참고자료
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.build-systems.gradle
Spring Boot Reference Documentation
This section goes into more detail about how you should use Spring Boot. It covers topics such as build systems, auto-configuration, and how to run your applications. We also cover some Spring Boot best practices. Although there is nothing particularly spe
docs.spring.io
Spring Boot | Querydsl 추가 (Gradle 7.x)
📌참고!!!! [gradle] 그레이들 Annotation processor 와 Querydsl Querydsl은 JPQL 빌더 오픈소스 프레임워크다. 일단 Querydsl 을 사용하기 위해 라이브러리를 추가해야 한다. SpringDataJPA도 추가되어 있어야..
gaemi606.tistory.com
'Spring boot' 카테고리의 다른 글
Spring MVC controller 레이어 테스트 결과가 null이 나온다고? (0) 2024.08.30 can not find symbol과 not acceptable (0) 2023.12.04 Spring Boot 와 QueryDSL + Gradle 구성 - ② (0) 2023.06.21 Execution failed for task ':test' 해결방법 (0) 2023.06.19 Spring Boot 와 QueryDSL + Gradle 구성 - ① (0) 2023.06.19