implementation 'mysql:mysql-connector-java'
or
runtimeOnly 'com.mysql:mysql-connector-j'
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:
hibernate:
ddl-auto: {}
jpa에서는 DB 초기화 전약으로 ddl-auto
옵션을 설정할 수 있다.
총 5가지 옵션을 지정할 수 있다.
- none : 사용하지 않음
- create : 기존 테이블 삭제 후 테이블 생성
- create-drop : 기존 테이블 삭제 후 테이블 생성, 종료 시점에 테이블 삭제
- update : 변경된 스키마 적용
- validate : 엔티티와 테이블 정상 매핑 확인
- update 옵션은 컬럼 삭제는 안되고 컬럼 추가만 반영됨
- 개발 초기에는 create, create-drop, update 가능
단, 스태이징, 운영환경에서는 절대 쓰면 안됨!
- 스태이징, 운영환경에서는 DB에 직접, 추가, 삭제, 변경한다!
오직, none, validate만 사용 가능하다.
그리고 미리 root 권한으로 데이타베이스명
과 같은 이름의 데이타베이스를 생성해주면 된다.
1) MySQL5.7
utf8mb4_general_ci
2) MySQL 8.0
utf8mb4_0900_ai_ci
// 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'
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명}")
도 추가해주길! 데이터베이스의 테이블명이 그대로 클래스 이름으로 들어가지기 때문!