[Spring] 초기 설정

양정훈·2022년 6월 16일
  • 작성일 : 22/06/14

환경

  • Java 11
  • Spring Boot 2.7.0
  • AWS Aurora MySQL 3.01.0
  • MySQL 8.0.23
  • JPA
  • Lombok

소스

  • build.gradle
plugins {
    id 'org.springframework.boot' version '2.7.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
}

group = 'com.me.my-project'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

configurations {
    compileOnly {
    	extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
   	developmentOnly 'org.springframework.boot:spring-boot-devtools'

   	compileOnly 'org.projectlombok:lombok'
   	annotationProcessor 'org.projectlombok:lombok'

   	implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.5'    	       
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'

   	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}
  • application.yml
spring:
  application.name: my_project
    
  datasource:
    driver-class-name: org.mariadb.jdbc.Driver
    username: user
    password: pw
    
  jpa.database-platform: org.hibernate.dialect.MySQL8Dialect
    
---
spring:
  config.activate.on-profile: production
    
  datasource:
    url: jdbc:mariadb:aurora//localhost:3306/my_project
    
---
spring:
  config.activate.on-profile: local
    
  datasource:
    url: jdbc:mariadb://localhost:3306/my_project?allowPublicKeyRetrieval=true&useSSL=false

설정

build.gradle

jdbc

  • mysql-connector-java, mariadb-java-client, aws-mysql-jdbc 세 가지 선택지가 있음
  • mariadb-java-client
    • Aurora 환경에서의 Failover를 지원함
    • Aurora의 파이프라이닝 호환 문제로 3버전에서는 기능 지원 안함
    • 해서 2.x 최신 버전인 2.7.5 사용
  • aws-mysql-jdbc
    • 동일하게 Aurora Failover 지원
    • 1.0.0 릴리즈가 22년 3월에 되어, 안정화 이슈가 있을 수 있을듯

application-local.yml

datasource.driver-class-name

  • 보통 연결 URL 기반으로 Spring Boot가 자동 세팅하므로 명시하지 않아도 됨
  • MySQL이 아닌 MariaDB Driver를 사용하므로 명시

datasource.url

  • 드라이버 정보 명시 : jdbc:mysql//, jdbc:mariadb//
  • jdbc:mariadb:aurora// aurora 모드 옵션을 붙여 Aurora Failover 기능 활성화
  • 옵션
    • MySQL 8버전부터 caching_sha2_password plugin이 디폴트임
    • allowPublicKeyRetrieval=true&useSSL=false 옵션을 주어, insecure connection을 허용
    • 권장되지 않으나, 로컬 환경이므로 사용

jpa.database-platform

  • DBMS마다 SQL 문법이 다름
  • Dialect : Hibernate가 DBMS에 알맞은 SQL문을 생성하도록 해줌
  • MySQL 8 버전인 경우 MySQL8Dialect, MySQLDialect 의 선택지가 있음
    • MySQL8Dialect : MySQLDialect 에 추가로 몇가지 메소드들을 지원함
  • Spring Boot 2.7.0
    → spring-boot-starter-data-jpa 2.7.0
    → hibernate-core 5.6.9.FInal
  • Hibernate 6.x 버전부터 MySQL8Dialect 는 deprecated됨 (MySQLDialect 사용)
  • 해서 MySQL8Dialect 를 사용

0개의 댓글