From a27a3d97057d4036b8ea676fc677588353ba0e26 Mon Sep 17 00:00:00 2001 From: JaeSeo Yang <96044622+psychology50@users.noreply.github.com> Date: Mon, 18 Mar 2024 17:07:16 +0900 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20JDBC=20&=20JPA=20&=20QueryDsl=20Con?= =?UTF-8?q?figuration=20=EC=84=A4=EC=A0=95=20(#7)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: mysql & jpa & queryDsl gradle 의존성 추가 * chore: queryDsl generated 디렉토리 git 추적 제거 * chore: jdbc, jpa application.yml 설정 추가 * chore: extenal-api 모듈 application.yml 그룹 추가 * chore: jpa 설정 profile 분리 && profile 그룹 추가 * chore: infra 모듈 application.yml 그룹 추가 * feat: Jpa config * feat: QueryDsl config * chore: EnalbeJpaAuditing auditorAwareRef 설정 제거 * fix: config 디렉토리 수정 --- .../src/main/resources/application.yml | 6 +++ pennyway-domain/.gitignore | 2 + pennyway-domain/build.gradle | 30 +++++++++++++ .../kr/co/pennyway/DomainPackageLocation.java | 4 ++ .../java/kr/co/pennyway/config/JpaConfig.java | 14 +++++++ .../kr/co/pennyway/config/QueryDslConfig.java | 18 ++++++++ .../src/main/resources/application-domain.yml | 42 ++++++++++++++++++- .../src/main/resources/application-infra.yml | 6 +++ 8 files changed, 121 insertions(+), 1 deletion(-) create mode 100644 pennyway-domain/src/main/java/kr/co/pennyway/DomainPackageLocation.java create mode 100644 pennyway-domain/src/main/java/kr/co/pennyway/config/JpaConfig.java create mode 100644 pennyway-domain/src/main/java/kr/co/pennyway/config/QueryDslConfig.java diff --git a/pennyway-app-external-api/src/main/resources/application.yml b/pennyway-app-external-api/src/main/resources/application.yml index e794dea7f..1e3147ec6 100644 --- a/pennyway-app-external-api/src/main/resources/application.yml +++ b/pennyway-app-external-api/src/main/resources/application.yml @@ -1,3 +1,9 @@ +spring: + profiles: + group: + local: common, domain, infra + prod: common, domain, infra + jwt: secret-key: access-token: ${JWT_ACCESS_SECRET_KEY} diff --git a/pennyway-domain/.gitignore b/pennyway-domain/.gitignore index b63da4551..91bbe90bc 100644 --- a/pennyway-domain/.gitignore +++ b/pennyway-domain/.gitignore @@ -28,6 +28,8 @@ bin/ !**/src/main/**/bin/ !**/src/test/**/bin/ +./main/generated/* + ### NetBeans ### /nbproject/private/ /nbbuild/ diff --git a/pennyway-domain/build.gradle b/pennyway-domain/build.gradle index 8544c3034..a0255c1ad 100644 --- a/pennyway-domain/build.gradle +++ b/pennyway-domain/build.gradle @@ -4,4 +4,34 @@ jar {enabled = true} dependencies { implementation project(':pennyway-common') + /* MySQL */ + implementation group: 'com.mysql', name: 'mysql-connector-j', version: '8.3.0' + + /* JPA */ + api group: 'org.springframework.boot', name: 'spring-boot-starter-data-jpa', version: '3.2.3' + + /* QueryDsl */ + implementation 'com.querydsl:querydsl-core:5.0.0' + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" + annotationProcessor "jakarta.annotation:jakarta.annotation-api:2.1.1" + annotationProcessor "jakarta.persistence:jakarta.persistence-api:3.1.0" +} + +def querydslDir = 'src/main/generated' + +sourceSets { + main.java.srcDirs += [querydslDir] } + +configurations { + querydsl.extendsFrom compileClasspath +} + +tasks.withType(JavaCompile).configureEach { + options.getGeneratedSourceOutputDirectory().set(file(querydslDir)) +} + +clean.doLast { + file(querydslDir).deleteDir() +} \ No newline at end of file diff --git a/pennyway-domain/src/main/java/kr/co/pennyway/DomainPackageLocation.java b/pennyway-domain/src/main/java/kr/co/pennyway/DomainPackageLocation.java new file mode 100644 index 000000000..02781d30e --- /dev/null +++ b/pennyway-domain/src/main/java/kr/co/pennyway/DomainPackageLocation.java @@ -0,0 +1,4 @@ +package kr.co.pennyway; + +public interface DomainPackageLocation { +} diff --git a/pennyway-domain/src/main/java/kr/co/pennyway/config/JpaConfig.java b/pennyway-domain/src/main/java/kr/co/pennyway/config/JpaConfig.java new file mode 100644 index 000000000..21544f186 --- /dev/null +++ b/pennyway-domain/src/main/java/kr/co/pennyway/config/JpaConfig.java @@ -0,0 +1,14 @@ +package kr.co.pennyway.config; + +import kr.co.pennyway.DomainPackageLocation; +import org.springframework.boot.autoconfigure.domain.EntityScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.data.jpa.repository.config.EnableJpaRepositories; + +@Configuration +@EnableJpaAuditing +@EntityScan(basePackageClasses = DomainPackageLocation.class) +@EnableJpaRepositories(basePackageClasses = DomainPackageLocation.class) +public class JpaConfig { +} diff --git a/pennyway-domain/src/main/java/kr/co/pennyway/config/QueryDslConfig.java b/pennyway-domain/src/main/java/kr/co/pennyway/config/QueryDslConfig.java new file mode 100644 index 000000000..799c4e5fd --- /dev/null +++ b/pennyway-domain/src/main/java/kr/co/pennyway/config/QueryDslConfig.java @@ -0,0 +1,18 @@ +package kr.co.pennyway.config; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import jakarta.persistence.EntityManager; +import jakarta.persistence.PersistenceContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class QueryDslConfig { + @PersistenceContext + private EntityManager entityManager; + + @Bean + public JPAQueryFactory jpaQueryFactory() { + return new JPAQueryFactory(entityManager); + } +} diff --git a/pennyway-domain/src/main/resources/application-domain.yml b/pennyway-domain/src/main/resources/application-domain.yml index a0ff13ad6..31669a5b3 100644 --- a/pennyway-domain/src/main/resources/application-domain.yml +++ b/pennyway-domain/src/main/resources/application-domain.yml @@ -1,11 +1,51 @@ +spring: + profiles: + group: + local: common + prod: common + + datasource: + url: ${DB_URL} + username: ${DB_USER_NAME} + password: ${DB_PASSWORD} + driver-class-name: com.mysql.cj.jdbc.Driver + --- spring: config: activate: on-profile: local + jpa: + database: MySQL + open-in-view: false + generate-ddl: false + hibernate: + ddl-auto: none + show-sql: true + properties: + hibernate: + dialect: org.hibernate.dialect.MySQLDialect + +logging: + level: + org.hibernate.sql: debug + org.hibernate.type: trace + com.zaxxer.hikari.HikariConfig: DEBUG + --- spring: config: activate: - on-profile: prod \ No newline at end of file + on-profile: prod + + jpa: + database: MySQL + open-in-view: false + generate-ddl: false + hibernate: + ddl-auto: none + show-sql: false + properties: + hibernate: + dialect: org.hibernate.dialect.MySQLDialect \ No newline at end of file diff --git a/pennyway-infra/src/main/resources/application-infra.yml b/pennyway-infra/src/main/resources/application-infra.yml index a0ff13ad6..306c178f1 100644 --- a/pennyway-infra/src/main/resources/application-infra.yml +++ b/pennyway-infra/src/main/resources/application-infra.yml @@ -1,3 +1,9 @@ +spring: + profiles: + group: + local: common + prod: common + --- spring: config: