QueryDSL 설정

김종조·2026년 4월 5일
post-thumbnail

설정 환경

  • java 17
  • spring boot 3.5.13

1. queryDSL과 JPA 연동을 위한 라이브러리 의존성

// QueryDSL 설정, 실제 QClass 코드를 생성하는 본체
implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'

2. annotationProcessor 활용 의존성 추가

// JPA에서 사용하는 어노테이션(@Entity, @Id 등 해석용)
annotationProcessor "jakarta.persistence:jakarta.persistence-api"

// 표준 이름표를 제공함, 생성된 파일 상단에 @Generated 표시를 남김
annotationProcessor "jakarta.annotation:jakarta.annotation-api"

// 엔티티를 분석하여 QueryDSL 전용 쿼리 클래스를 자동 생성
annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"

3. QClass가 생성될 위치 지정

def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

4. main sourceSet에 QClass 파일 디렉토리 추가

sourceSets {
    main.java.srcDirs += [ querydslDir ]
}

5. 컴파일 시 생성된 파일의 저장 디렉토리 설정

tasks.withType(JavaCompile).configureEach {
    options.getGeneratedSourceOutputDirectory().set(querydslDir)
}

6. clean 작업 시 생성된 QClass 폴더를 함께 삭제

-> 엔티티 이름을 바꾸거나 패키지 위치를 옮겼을 때, 예전에 만들어진 QClass 파일이 그대로 남아있으면 중복 클래스 에러를 내뱉는다.

clean {
    delete querydslDir
}

QueryDSL 설정만 보기

dependencies {
	// QueryDSL 설정, 실제 QClass 코드를 생성하는 본체
	implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'

	// JPA에서 사용하는 어노테이션(@Entity, @Id 등 해석용)
	annotationProcessor "jakarta.persistence:jakarta.persistence-api"

	// 표준 이름표를 제공함, 생성된 파일 상단에 @Generated 표시를 남김
	annotationProcessor "jakarta.annotation:jakarta.annotation-api"

	// 엔티티를 분석하여 QueryDSL 전용 쿼리 클래스를 자동 생성
	annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
}

// QClass가 생성될 위치 지정
def querydslDir = layout.buildDirectory.dir("generated/querydsl").get().asFile

// 해당 경로를 소스셋(SourceSet)에 추가하여 IDE가 인식하게 함
sourceSets {
	main.java.srcDirs += [querydslDir]
}

// 컴파일 시 생성된 소스파일의 위치를 위에서 저장한 곳으로 고정
tasks.withType(JavaCompile).configureEach {
	options.getGeneratedSourceOutputDirectory().set(querydslDir)
}

// clean 작업 시 생성된 QClass 폴더도 함께 삭제
clean {
	delete querydslDir
}
profile
웹 개발 공부 기록

0개의 댓글