개발/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")
}
반응형