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 : 테이블 생성, 이미 존재하는 테이블은 삭제 x, 외래키fk 제약 조건에 삭제 안될 수 있음!
- create-drop : 어플리케이션 시작시, 기존 테이블 삭제 후 테이블 생성, 어플리케이션 종료 시점에 테이블, 데이터 모두 삭제
✳️ 만약, 외래키 조건이 걸린 테이블 전체를 삭제 후, 다시 만들고 싶으면,create-drop
이 나을 것!
- 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:
hibernate:
ddl-auto: update # 테이블 생성 및 업데이트 전략 (create, create-drop, update, validate, none)
# defer-datasource-initialization: true # DataSource 초기화 지연
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect # Hibernate Dialect 설정
format_sql: true # SQL 포맷팅
highlight_sql: true # SQL 하이라이트 출력
use_sql_comments: true # JPQL SQL 주석 사용
default_batch_fetch_size: 100 # 기본 배치 크기 설정
logging:
level:
root: info # org.hibernate.SQL: debug
그리고 Entity 객체에 @Table(name="{table명}")
도 추가해주길! 데이터베이스의 테이블명이 그대로 클래스 이름으로 들어가지기 때문!