From 69884766a98d1425488940fd83173221a2f7ec03 Mon Sep 17 00:00:00 2001 From: Jisu Lim <69844138+Ji-soo708@users.noreply.github.com> Date: Mon, 13 Jan 2025 01:34:45 +0900 Subject: [PATCH] =?UTF-8?q?[YS-132]=20chore:=20QueryDSL=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EC=B6=94=EA=B0=80=20(#26)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: add QueryDSL dependency and configuration file * fix: fix package path structure * chore: add querydsl to .gitignore --- .gitignore | 3 + build.gradle.kts | 56 +++++++++++++++++-- .../infrastructure/database/QueryDslConfig.kt | 16 ++++++ .../database/entity/VerificationEntity.kt | 2 +- .../database/entity/common/AuditingEntity.kt | 2 + .../experiment/ExperimentImageEntity.kt | 2 +- .../entity/experiment/ExperimentPostEntity.kt | 2 +- .../database/entity/member/MemberEntity.kt | 2 +- 8 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 src/main/kotlin/com/dobby/backend/infrastructure/database/QueryDslConfig.kt diff --git a/.gitignore b/.gitignore index ec44ee4d..11e444ea 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,6 @@ application-local.yml ### Kotlin ### .kotlin /src/main/resources/application.yml + +### QueryDSL ### +generated/ diff --git a/build.gradle.kts b/build.gradle.kts index 5e7a9065..2c179005 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,11 +1,12 @@ plugins { kotlin("jvm") version "1.9.25" kotlin("plugin.spring") version "1.9.25" + kotlin("plugin.jpa") version "1.9.25" + kotlin("kapt") version "1.9.25" id("org.springframework.boot") version "3.4.1" id("io.spring.dependency-management") version "1.1.7" id("jacoco") id("org.sonarqube") version "6.0.1.5171" - kotlin("plugin.jpa") version "1.9.25" } group = "com.dobby" @@ -26,12 +27,17 @@ configurations { extendsFrom(configurations.annotationProcessor.get()) } } +val queryDslVersion: String by extra repositories { mavenCentral() maven{url = uri("https://jitpack.io") } } +kapt { + includeCompileClasspath = false +} + dependencies { implementation("org.springframework.boot:spring-boot-starter-data-jpa") { exclude(group = "org.hibernate", module = "hibernate-core") @@ -47,9 +53,6 @@ dependencies { implementation("org.springdoc:springdoc-openapi-starter-webmvc-ui:2.7.0") implementation("org.springframework.cloud:spring-cloud-starter-openfeign") implementation("io.awspring.cloud:spring-cloud-starter-aws:2.4.4") - implementation("com.github.in-seo:univcert:master-SNAPSHOT") { - exclude(group = "org.hamcrest", module= "harmcest-core") - } compileOnly("org.projectlombok:lombok") runtimeOnly("com.mysql:mysql-connector-j") runtimeOnly("com.h2database:h2") @@ -65,6 +68,12 @@ dependencies { runtimeOnly("io.jsonwebtoken:jjwt-impl:$jjwtVersion") runtimeOnly("io.jsonwebtoken:jjwt-jackson:$jjwtVersion") + // querydsl + 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") + val koTestVersion = "5.8.1" testImplementation("io.kotest:kotest-runner-junit5-jvm:$koTestVersion") testImplementation("io.kotest:kotest-assertions-core:$koTestVersion") @@ -97,6 +106,29 @@ allOpen { annotation("jakarta.persistence.Embeddable") } +// querydsl +val generated = file("src/main/generated") +tasks.withType { + options.generatedSourceOutputDirectory.set(generated) +} + +sourceSets { + main { + kotlin.srcDirs += generated + } +} + +tasks.named("clean") { + doLast { + generated.deleteRecursively() + } +} + +kapt { + generateStubs = true +} + + jacoco { toolVersion = "0.8.8" } @@ -131,6 +163,11 @@ tasks.jacocoTestReport { xml.outputLocation.set(file(layout.buildDirectory.dir("reports/jacoco/index.xml").get().asFile)) } + val Qdomains = mutableListOf() // 초기화 + for (qPattern in listOf("**/QA", "**/QZ")) { + Qdomains.add("$qPattern*") + } + classDirectories.setFrom( files( classDirectories.files.flatMap { dir -> @@ -143,7 +180,8 @@ tasks.jacocoTestReport { "**/domain/model/*", "**/infrastructure/*", "**/presentation/*", - "**/util/*" + "**/util/*", + *Qdomains.toTypedArray() ) }.files } @@ -153,6 +191,11 @@ tasks.jacocoTestReport { } tasks.jacocoTestCoverageVerification { + val Qdomains = mutableListOf() + for (qPattern in listOf("**/QA", "**/QZ")) { + Qdomains.add("$qPattern*") + } + violationRules { rule { isFailOnViolation = false @@ -179,7 +222,8 @@ tasks.jacocoTestCoverageVerification { "**.domain.model.*", "**.infrastructure.*", "**.presentation.*", - "**.util.*" + "**.util.*", + *Qdomains.toTypedArray() ) } } diff --git a/src/main/kotlin/com/dobby/backend/infrastructure/database/QueryDslConfig.kt b/src/main/kotlin/com/dobby/backend/infrastructure/database/QueryDslConfig.kt new file mode 100644 index 00000000..4b086d7f --- /dev/null +++ b/src/main/kotlin/com/dobby/backend/infrastructure/database/QueryDslConfig.kt @@ -0,0 +1,16 @@ +package com.dobby.backend.infrastructure.database + +import com.querydsl.jpa.impl.JPAQueryFactory +import jakarta.persistence.EntityManager +import org.springframework.context.annotation.Bean +import org.springframework.context.annotation.Configuration + +@Configuration +class QueryDslConfig( + val entityManager: EntityManager +) { + @Bean + fun jpaQueryFactory(): JPAQueryFactory { + return JPAQueryFactory(entityManager) + } +} diff --git a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/VerificationEntity.kt b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/VerificationEntity.kt index 800e7c94..31acccd4 100644 --- a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/VerificationEntity.kt +++ b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/VerificationEntity.kt @@ -1,6 +1,6 @@ package com.dobby.backend.infrastructure.database.entity -import AuditingEntity +import com.dobby.backend.infrastructure.database.entity.common.AuditingEntity import com.dobby.backend.infrastructure.database.entity.enum.VerificationStatus import jakarta.persistence.* import java.time.LocalDateTime diff --git a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/common/AuditingEntity.kt b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/common/AuditingEntity.kt index 1e1fc410..0a6aa43d 100644 --- a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/common/AuditingEntity.kt +++ b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/common/AuditingEntity.kt @@ -1,3 +1,5 @@ +package com.dobby.backend.infrastructure.database.entity.common + import jakarta.persistence.Column import jakarta.persistence.EntityListeners import jakarta.persistence.MappedSuperclass diff --git a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentImageEntity.kt b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentImageEntity.kt index c9c6f47a..82c4c212 100644 --- a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentImageEntity.kt +++ b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentImageEntity.kt @@ -1,6 +1,6 @@ package com.dobby.backend.infrastructure.database.entity.experiment -import AuditingEntity +import com.dobby.backend.infrastructure.database.entity.common.AuditingEntity import com.dobby.backend.domain.model.experiment.ExperimentImage import jakarta.persistence.* diff --git a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentPostEntity.kt b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentPostEntity.kt index 70953f3a..1fc9850d 100644 --- a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentPostEntity.kt +++ b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/experiment/ExperimentPostEntity.kt @@ -1,6 +1,6 @@ package com.dobby.backend.infrastructure.database.entity.experiment -import AuditingEntity +import com.dobby.backend.infrastructure.database.entity.common.AuditingEntity import com.dobby.backend.domain.model.experiment.ExperimentPost import com.dobby.backend.infrastructure.database.entity.member.MemberEntity import com.dobby.backend.infrastructure.database.entity.enum.MatchType diff --git a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/member/MemberEntity.kt b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/member/MemberEntity.kt index 49c74a9c..e9586b85 100644 --- a/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/member/MemberEntity.kt +++ b/src/main/kotlin/com/dobby/backend/infrastructure/database/entity/member/MemberEntity.kt @@ -1,6 +1,6 @@ package com.dobby.backend.infrastructure.database.entity.member -import AuditingEntity +import com.dobby.backend.infrastructure.database.entity.common.AuditingEntity import com.dobby.backend.domain.model.member.Member import com.dobby.backend.infrastructure.database.entity.enum.MemberStatus import com.dobby.backend.infrastructure.database.entity.enum.ProviderType