2025. 3. 1. 20:22ㆍDataBase/JPA
QueryDSL 엔티티 변경 시 빌드 오류 해결 방법
🚀 들어가며
QueryDSL을 활용해 쿼리를 작성할 때, 엔티티의 필드(테이블 변수)를 수정하면 기존의 QClass
에서 해당 필드를 찾지 못해 빌드가 실패하는 문제가 발생할 수 있다.
이 문제를 해결하려면 변경된 엔티티 필드를 반영한 QClass
를 새로 생성해야 하지만, 빌드 과정에서 기존 QClass
가 남아 있어 오류가 발생하는 경우가 많다.
기존 방식대로라면, 해당 쿼리들을 주석 처리 → 빌드 진행 → QClass 갱신 → 주석 해제 후 수정이라는 번거로운 과정이 필요하다. 하지만, 이를 자동화하면 불필요한 수작업을 줄이고 더 효율적으로 개발할 수 있다.
이번 글에서는 Gradle 설정을 통해 QClass
를 자동으로 갱신하는 방법을 정리해보았다.
✅ 1. Gradle 설정 (build.gradle
)
(1) 플러그인 및 의존성 추가
다음과 같이 build.gradle
에 QueryDSL 관련 의존성을 추가한다.
plugins {
id 'java'
id 'org.springframework.boot' version '3.1.0' // 프로젝트 버전에 맞게 수정
id 'io.spring.dependency-management' version '1.1.0'
}
dependencies {
implementation 'com.querydsl:querydsl-jpa:5.0.0' // 최신 버전 사용
annotationProcessor 'com.querydsl:querydsl-apt:5.0.0:jpa'
annotationProcessor 'jakarta.persistence:jakarta.persistence-api:3.1.0' // JPA 관련 설정
annotationProcessor 'jakarta.annotation:jakarta.annotation-api:2.1.1' // @Generated 어노테이션 지원
}
(2) QClass
자동 생성 디렉토리 지정
QueryDSL의 QClass
가 자동 생성될 디렉토리를 명확하게 지정해준다.
tasks.withType(JavaCompile).configureEach {
options.annotationProcessorGeneratedSourcesDirectory = file("$buildDir/generated/sources/annotationProcessor/java/main")
}
- 기본적으로
$buildDir/generated/sources/annotationProcessor/java/main
경로에QClass
가 생성됨. - 프로젝트가 변경될 때마다
QClass
를 자동 갱신하도록 설정하여 빌드 오류를 최소화할 수 있다.
✅ 2. clean
시 기존 QClass
자동 삭제
기존 QClass
가 남아 있어서 빌드 시 오류가 발생하는 경우를 방지하기 위해, 빌드 전에 자동으로 QClass
를 삭제하는 작업을 추가한다.
tasks.register('cleanGenerated', Delete) {
delete file("$buildDir/generated")
}
clean.dependsOn cleanGenerated
clean
실행 시 기존QClass
가 삭제되므로, 최신 엔티티 정보를 반영한QClass
가 생성된다.
✅ 3. IntelliJ 설정 (QClass
인식 문제 해결)
위 설정을 적용한 후에도 IntelliJ에서 QClass
를 인식하지 못하는 경우가 있다. 이를 해결하려면 다음 단계를 수행한다.
🛠 IntelliJ 설정 방법
- File > Settings > Build, Execution, Deployment > Compiler > Annotation Processors
Enable annotation processing
체크
- Build > Rebuild Project 실행
build/generated/sources/annotationProcessor/java/main
폴더를Mark as Generated Sources Root
로 설정
이 설정을 통해 IntelliJ가 자동 생성된 QClass
를 정상적으로 인식할 수 있다.
✅ 4. 빌드 및 QClass
확인
이제 QClass
가 정상적으로 생성되는지 확인해보자.
./gradlew clean build
이후 build/generated/sources/annotationProcessor/java/main
경로에 QClass
가 생성되었는지 확인하면 된다.
🎯 마무리
이번 설정을 통해 QueryDSL 엔티티 변경 시 발생하는 빌드 오류 문제를 해결할 수 있었다.
기존에는 엔티티 변경 후 쿼리를 주석 처리하고 빌드한 뒤 다시 수정해야 하는 번거로움이 있었지만,
Gradle 설정을 통해 QClass
를 자동으로 갱신함으로써 이런 불편함을 제거할 수 있었다.
이 방법을 적용하면 더 효율적으로 QueryDSL을 활용하여 개발할 수 있을 것이다. 🚀
'DataBase > JPA' 카테고리의 다른 글
[JPA]@Transactional이란 (0) | 2024.09.24 |
---|---|
[ETC] Fetch 옵션 (0) | 2023.08.28 |
[JPA] 엔티티 매핑 (0) | 2022.12.21 |
[JPA] 영속성 관리 (0) | 2022.12.19 |