개발/Kotlin

QueryDSL 설정 - Kotlin

브라운구 2022. 6. 19. 18:02
반응형

Kotlin과 JPA그리고 QueryDSL을 사용하면서 자주 설정에 대한 내용을 찾아보곤 한다. 그리고 Kotlin 설정은 Java와는 다르기 때문에 간단하게나마 기록해둔다.

[2023.03.18] 스프링부트 3.X QueryDSL 설정 추가

프로젝트 버전

  • SpringBoot 2.6.8
  • Gradle 7.4.1
  • JDK 11
  • Kotlin 1.7
  • Spring Data JPA 2.6.8

Gradle 설정

plugins {
    ...
    kotlin("kapt") version "1.6.21"
}

dependencies {
    ...
    // querydsl
    implementation("com.querydsl:querydsl-jpa") //querydsl
    kapt("com.querydsl:querydsl-apt:${dependencyManagement.importedProperties["querydsl.version"]}:jpa") //querydsl
}

이렇게 설정한 상태에서 Gradle Refresh를 하게 되면 QueryDSL을 사용할 수 있게 된다.

중간에 dependencyManagement의 경우 다음을 참고하면 된다

Gradle - dependency-management Plugin

 

Gradle - dependency-management Plugin

종속성관리를 위한 Gradle 플러그인이 있습니다. 해당 플러그인을 사용하면 버전을 명시하지 않아도 Management에서 관리되고 있는 버전으로 종속성관리를 해줍니다. Spring Boot starter 버전의 내용은 o

browngoo.tistory.com

 

@Entity를 작성하고 Build를 해보면 Q클래스가 작성되어있는것을 볼 수 있다

혹시 나중에 참고가 될까 build.gradle.kts를 전부 올려둔다

더보기
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

plugins {
    id("org.springframework.boot") version "2.6.8"
    id("io.spring.dependency-management") version "1.0.11.RELEASE"
    kotlin("jvm") version "1.6.21"
    kotlin("plugin.spring") version "1.6.21"
    kotlin("plugin.jpa") version "1.6.21"
    
    kotlin("kapt") version "1.6.21" 
}

group = "com.brown"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_11

repositories {
    mavenCentral()
}

allOpen{
    annotation("javax.persistence.Entity")
    annotation("javax.persistence.Embeddable")
    annotation("javax.persistence.MappedSuperclass")
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("org.springframework.boot:spring-boot-starter-data-jpa")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.springframework.boot:spring-boot-starter-validation")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
    runtimeOnly("com.h2database:h2")
    testImplementation("org.springframework.boot:spring-boot-starter-test")

    // querydsl
    implementation("com.querydsl:querydsl-jpa")
    kapt("com.querydsl:querydsl-apt:${dependencyManagement.importedProperties["querydsl.version"]}:jpa")
}



tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "11"
    }
}

tasks.withType<Test> {
    useJUnitPlatform()
}

Spring Boot 3.X 에서 QueryDSL 설정

스프링 부트 3.X에서는 JPA관련 어노테이션이 javax에서 jakarta로 변경되었다. 그래서 QueryDSL 관련 설정을 다음과 같이 설정해야한다.

plugins {
    ...
    kotlin("kapt") version "1.7.22"
}


dependencies {
    ...
    implementation("com.querydsl:querydsl-jpa:5.0.0:jakarta")
    kapt("com.querydsl:querydsl-apt:5.0.0:jakarta")
}
반응형