Skip to main content

Command Palette

Search for a command to run...

[Java / Kotlin] QueryDSL 설정

개발 진행중 QueryDsl 설정 했던내용 정리..

Updated
•2 min read•View as Markdown
[Java / Kotlin] QueryDSL 설정

기존 mybatis 설정 및 구현되어있던 부분을 점점 JPA 전환하기 위해 작업하면서 필요에 따라 QueryDSL 사용도 필요 할것으로 예상되어 (물론 QueryDsl 구현부도 존재합니다.) 설정한 부분을 기록하고자 합니다.

파트는 maven / gradle 로 정리해볼까 합니다.

공통적으로 Qtable 사용을 위한 classpath 내 빌드 위치가 필요했구요.. QueryDSL사용 해보신 분들은 아시겠지만 빌드 안되어 있을때 소스파일내에 오류 등 약간(?) 불편한 부분도 없지 않아 있겠습니다. (적응하면 크게 어렵진 않겠지만요 ㅎㅎ)

Maven 설정

maven apt 설정(kotlin + java 구성되어 있어 java 로 생성된 코드에만 Qtable 생성가능하도록)

  • maven (spring boot 2.x) 였습니다.
<plugins>
...
    <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>

</plugins>

[프로젝트내 Qtable 생성화면]

Gradle 설정

  • Gradle

gradle kapt 설정 (kapt 버전이 더이상 증가되진 않지만…. KSP 에서 테스트 및 검증 이후 상용화 결정예정)

https://developer.android.com/studio/build/migrate-to-ksp?hl=ko

spring boot 3.x + kspt : 신규 프로젝트에 적용하였습니다. (spring boot 3.x)

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

buildscript {
    dependencies {
        classpath("gradle.plugin.com.ewerk.gradle.plugins:querydsl-plugin:1.0.10")
        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.21")
        classpath("org.jetbrains.kotlin:kotlin-allopen:1.7.21")
        classpath("org.jetbrains.kotlin:kotlin-noarg:1.7.21")
    }
}
plugins {
    id("org.springframework.boot") version "3.1.0"
    id("io.spring.dependency-management") version "1.1.0"
    kotlin("jvm") version "1.8.21"
    kotlin("plugin.spring") version "1.8.21"

    kotlin("kapt") version "1.8.22" //Querydsl
    idea
}

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

group = "com.crypted.kssupport"
version = "0.0.1-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_17

repositories {
    mavenCentral()
    //mavenLocal() dev test 용도

    maven {
        url = uri("<https://maven.pkg.github.com/kstadium/ks-common-java>")
        credentials {
            username = project.findProperty("gpr.user") as String? ?: System.getenv("USERNAME")
            password = project.findProperty("gpr.key") as String? ?: System.getenv("TOKEN")
        }
    }
}

dependencies {
    [... 중략]
}

idea {
    module {
        val kaptMain = file("build/generated/source/kapt/main")
        sourceDirs.add(kaptMain)
        generatedSourceDirs.add(kaptMain)
    }
}

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

More from this blog

로컬 LLM 환경 구축기: Ollama + Openclaw

솔짂히 말하면 처음엔 그냥 호기심이었다. 아이언맨의 자비스를 아시나요? 영화 아이언맨을 아시나요? 자비스와 함께 슈트를 제작하고 전투하는 장면을 장면을 보며 혹시 저련 인공지능 비서를 가지고 싶다라는 생각을 해보시진 않았나요? 올해 열풍을 일으킨 오픈클로 솔직히 말하면 처음엔 그냥 호기심이었다. "ChatGPT 쓰면 되지, 굳이 로컬에?"

Mar 29, 202610 min read
로컬 LLM 환경 구축기: Ollama + Openclaw

Code Rabbit 경험기

요즘 여러가지 AI Tool들을 보면서 경험을 하고 있는데 git과 관련된 code rabbit 이라는 tool에 관심을 가지게 되어 간략히 사용한 경험을 기록해보고자 합니다. 시작하기 code rabbit : https://app.coderabbit.ai/ 가입 및 로그인후 비교적 간단히 Github 연동이 가능 합니다. 개발 Tool은 intellij를 사용하는데 intellij에는 플러그인이 따로 존재하지 않습니다. VS code ...

Jul 18, 20252 min read
Code Rabbit 경험기

@forlks.blog

13 posts

South Korea.