SpringBoot Mysql 설정(업데이트 - JPA, TEST용 설정 추가)

devdo·2022년 2월 13일
0

SpringBoot

목록 보기
35/35
post-thumbnail

build.gradle

 implementation 'mysql:mysql-connector-java'

or

runtimeOnly 'com.mysql:mysql-connector-j'

application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/{데이터베이스명}?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: root
    password: {root password}


  jpa:
    hibernate:
      ddl-auto: update
    properties:
      hibernate:
        show-sql: true
        format_sql: true


logging:
  level:
    root: info

useSSL=false 은 Mysql 5.5버전부터 SSL 접속을 기본으로 세팅해 놓았다.
그래서 SSL 처리르 안하면 에러 메시지가 나올 수 있어 SSL사용값을 false로 지정해둔다.


JPA DDL AUTO 옵션

  jpa:
    hibernate:
      ddl-auto: {}

jpa에서는 DB 초기화 전약으로 ddl-auto 옵션을 설정할 수 있다.
총 5가지 옵션을 지정할 수 있다.

  1. none : 사용하지 않음
  2. create : 기존 테이블 삭제 후 테이블 생성
  3. create-drop : 기존 테이블 삭제 후 테이블 생성, 종료 시점에 테이블 삭제
  4. update : 변경된 스키마 적용
  5. validate : 엔티티와 테이블 정상 매핑 확인

💥 주의사항

  • update 옵션은 컬럼 삭제는 안되고 컬럼 추가만 반영됨
  • 개발 초기에는 create, create-drop, update 가능 단, 스태이징, 운영환경에서는 절대 쓰면 안됨!
  • 스태이징, 운영환경에서는 DB에 직접, 추가, 삭제, 변경한다! 오직, none, validate만 사용 가능하다.

데이터베이스 생성

그리고 미리 root 권한으로 데이타베이스명과 같은 이름의 데이타베이스를 생성해주면 된다.

MySQL 버전 시 기본 charset

1) MySQL5.7

utf8mb4_general_ci

2) MySQL 8.0

utf8mb4_0900_ai_ci


JPA , TEST 를 위한 Mysql 설정

build.gradle

// test에서 lombok 사용 -> @Sl4j 사용가능
testCompileOnly 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok' 

 // test sql 확인용
implementation('com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.8.0')

// jpa
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
// mysql driver
runtimeOnly 'com.mysql:mysql-connector-j'
 

application.yml

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/{데이터베이스명}?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul&characterEncoding=UTF-8
    username: root
    password: {root password}


  jpa:
    open-in-view: true
    hibernate:
      ddl-auto: update
      naming:
        physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
      use-new-id-generator-mappings: false
    show-sql: true
    properties:
      hibernate.format_sql: true
      dialect: org.hibernate.dialect.MySQL8Dialect
      # dialect: org.hibernate.dialect.MySQL5InnoDBDialect


logging:
  level:
    root: info # org.hibernate.SQL: debug

그리고 Entity 객체에 @Table(name="{table명}") 도 추가해주길! 데이터베이스의 테이블명이 그대로 클래스 이름으로 들어가지기 때문!

profile
배운 것을 기록합니다.

0개의 댓글