본문 바로가기
[SpringBoot]/[Spring 강의]

[Kotlin + Spring] Spring 3.X 버전 QueryDSL 세팅하기

by Hevton 2024. 4. 8.
반응형

 

 

이전 글에서 소개했듯이, 저는 이번 제 1인 프로젝트에 QueryDSL을 적용하기로 했습니다.

Spring 2.6 이상 버전이냐 Spring 3.X 버전이냐에 따라 세팅에 차이가 조금씩 있는 것 같습니다.

저도 그랬지만 아마 많은 분들이 QueryDSL 초반 세팅에서부터 좀 힘들어 하셨을 것 같아요.

 

이 글에서는 Spring 3.X 버전을 기준으로 세팅 방법을 기록하겠습니다.

// 중략

plugins {
    kotlin("kapt") version "1.9.21"
}

// 중략

val queryDslVersion: String by extra


// 중략

dependencies {
	implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta")
    kapt("com.querydsl:querydsl-apt:5.0.0:jakarta")
    kapt("jakarta.annotation:jakarta.annotation-api")
    kapt("jakarta.persistence:jakarta.persistence-api")
}


// 중략

// Querydsl 설정부 추가 - start
val generated = file("src/main/generated")

// querydsl QClass 파일 생성 위치를 지정
tasks.withType<JavaCompile> {
    options.generatedSourceOutputDirectory.set(generated)
}

// kotlin source set 에 querydsl QClass 위치 추가
sourceSets {
    main {
        kotlin.srcDirs += generated
    }
}

// gradle clean 시에 QClass 디렉토리 삭제
tasks.named("clean") {
    doLast {
        generated.deleteRecursively()
    }
}

// Querydsl 설정부 추가 - end

 

설정을 완료해준 뒤에 Sync를 해주시고,

QueryDslConfig 설정 파일을 만들어줘서, JPAQueryFactory를 전역적으로 사용할 수 있게 합니다.

@Configuration
class QueryDslConfig(
    val entityManager: EntityManager
) {

    @Bean
    fun queryFactory(): JPAQueryFactory {
        return JPAQueryFactory(entityManager)
    }
}

 

 

작성이 된 뒤에 clean을 진행해줍니다.

./gradlew clean compileKotlin

 

 

 

정상적으로 세팅이 되었다면, Qclass들이 생성되었을 겁니다!

 

 

참고

https://turtle-codingstudy.tistory.com/54

https://mingg123.tistory.com/273

https://velog.io/@hana0627/Kotlin-SpringBoot3-QueryDsl-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

반응형