일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 술담화
- iTerm2
- iterm
- 제주몬순커피주
- 클래스파일
- 어린날의추억
- 클래스로딩
- iTerm스킨
- 자바
- 전통주
- 11057
- 백준
- 제주술
- 개발용어
- 감사주
- 데이터베이스
- 아규먼트
- 색상설정
- 술샘
- 스프링부트
- 술쟁이
- iTerm테마
- 테마설정
- 포도알
- 자바언어의본질
- 커피냑
- DB기초
- 다이나믹프로그래밍
- 스킨설정
- 응답상태
- Today
- Total
배니스트의 개발추적기
[Project] Spring MySQL 연동 방법 본문
스프링 강의에서는 데이터베이스로 H2를 사용했는데, 사용자가 많은 MySQL을 연동하려고 한다.
그 과정에서 고생한 결과를 기록하고자 한다. 기본적으로 Spring과 MySQL은 설치되어 있다는 전제하에 기술하도록 하겠다.
+MySQL에서 DB(scheme) 설정까지 해두어야 한다.
[개발 환경]
OS: Mac OS Catalina 10.15.6
IDE: intellij Community
Language: Java 11
Framework: Spring Boot 2.3.3
Build: Gradle 6.6
Database: MySQL
1. dependencies 연결
build.gradle의 dependencies에 다음의 항목을 추가해준다.
dependencies {
compile 'org.springframework.boot:spring-boot-starter-jdbc'
compile 'mysql:mysql-connector-java'
}
2. datasource 연결(DB Connection)
application.properties에 설정해주어야 하는데 필자는 yaml 양식이 가독성이 높아 application.yml을 생성한 뒤 다음과 같이 설정해주었다.
spring:
datasource:
name: "jdbc/[DB이름]"
driverClassName: com.mysql.cj.jdbc.Driver
url: "jdbc:mysql://localhost:3306/[DB이름]?autoReconnect=true&serverTimezone=UTC"
username: "root"
password: "[비밀번호]"
- name: DB이름
- driverClassName: 아래 스프링부트 튜토리얼에서 database 연동하는 방법이 기술되어 있다.
https://www.tutorialspoint.com/spring_boot/spring_boot_database_handling.htm
다만, com.mysql.jdbc.Driver으로 안내되어 있는데, 막상 실행시켜보면 deprecated된다.
com.mysql.cj.jdbc.Driver로 설정해준다.
- url: 'serverTimezone=UTC'을 넣지 않으면 아래 무시무시한 에러로그를 발견하게 될 것이다.
The server time zone value 'KST' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the 'serverTimezone' configuration property) to use a more specifc time zone value if you want to utilize time zone support.
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:na]
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) ~[na:na]
at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) ~[mysql-connector-java-8.0.21.jar:8.0.21]
.....
- username: root
- password: DB를 생성할 때 입력했던 password를 넣어두면 된다.