✏️ 배경
토이 프로젝트에서는 최신 환경으로 해보고 싶어서 Spring Boot 3.0 버전과 Spring Framework 6을 사용해서 개발을 진행하고 있었는데, 복잡한 동적 쿼리를 해결하기 위해 Querydsl 도입하기 위해 적용하는 시점에 설정 후 컴파일에 계속해서 실패하는 상황이 발생했다.
스프링 부트 3.0 Maven 환경에서 Querydsl을 적용하는 방법에 대해서 간단히 공유하고자 한다.
Gradle 환경이라면 다른 포스트를 찾아보는 걸 권장한다.
🔎 AS-IS
보통 Querydsl 설정을 검색해서 보면 아래와 같은 설정을 하라는 글을 많이 접하게 된다.
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>5.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>5.0.0</version>
</dependency>
<!-- 플러그인 설정 -->
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.1.3</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
필자도 초반에 해당 설정 관련 글을 읽고 프로젝트에 적용했으나, maven compile 과정 중 javax.persistence.Entity 관련 에러가 발생했다.
에러를 보고 엔티티 import의 jakarta.persistence를 단순하게 javax.persistence로 변경해서 적용을 성공시키긴 했지만 잘못된 방법이었다. (결국 런타임에 실패하게 된다.) 😂😂😂😂
🔎 TO-BE
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>5.0.0</version>
<classifier>jakarta</classifier>
</dependency>
<classifier> jakarta </classifier>를 추가하여 Querydsl이 JakartaEE를 지원하도록 해야 한다.
만약 스프링 부트 2.x.x 버전에서 3.xx 버전으로 새롭게 올리는 과정이라면 apt-maven-plugin 플러그인 설정도 삭제해주어야 한다. Querydsl jakarta 버전에서는 이미 javax.annotation.processing.Processor를 제공하고 있다고 한다.
REFERENCE
https://post.dooray.io/we-dooray/tech-insight-ko/back-end/4173/
스프링 부트 3.0 으로 전환 - Dooray! POST
2022년 11월에 기존의 Spring framework 5 와 Spring Boot 2.X 버전을 대체하는 Spring framework 6와 Spring Boot 3 가 릴리즈되었습니다. 어떤 변화가 있고, 어떻게 설정해야 할지 알아봅니다
post.dooray.io
'Spring > JPA' 카테고리의 다른 글
[JPA] orphanRemoval 옵션을 사용할 때 Update 주의사항 (0) | 2023.10.28 |
---|---|
@Transactional 특징, 사용방법, 주의점 (0) | 2023.08.15 |
JPA 동일 트랜잭션에서 update와 insert 동시에 수행할 때 문제 해결하기 (쿼리 실행 순서 문제) (0) | 2023.02.05 |
JPA @Where 일괄 조회 사용법 및 문제점과 해결방안 (0) | 2023.01.24 |
JPA @Query @Modifying 벌크 삭제 연산시 연관관계 문제 해결하기 (with SQLIntegrityConstraintViolationException) (0) | 2023.01.22 |
댓글