오늘은 Spring Boot 와 데이터베이스인 mysql을 연결하는 방법에 대해 알아보자 🙂
필자의 경우 mysql을 사용하면서 Sequel Ace 라는 MySQL/MariaDB 데이터베이스 작업을 위한 Mac 데이터베이스 관리 애플리케이션을 사용할 예정이다. 사용에 익숙치 않다면 mysql workbench를 이용해 DB 작업에 조금 더 편의성을 갖춰서 작업하도록 하자.
$ mysql.server start // mysql 사용을 위해 항상 서버를 키는 것을 잊지말자 !
(option + shift + A) db 생성 커맨드
서버를 실행한 후에 Sequel Ace를 통해 로컬로 서버를 접속한 후 DateBase Name을 study 라는 이름으로 생성하였다.
작업하게될 Spring Boot에서 간단한 회원정보 입력을 받기위해 테이블을 생성할 것인데 구조는 아래와 같다.
CREATE TABLE user (
id int NOT NULL AUTO_INCREMENT,
email varchar(255) DEFAULT NULL,
name varchar(255) DEFAULT NULL,
rog_date datetime DEFAULT NULL,
mod_date datetime DEFAULT NULL,
PRIMARY KEY (id)
);
중요한점은 id 값이 PRIMARY KEY로 데이터를 입력받는 것이 아닌 자동증가 할것이기 때문에 AUTO_INCREMENT 를 꼭 설정해주도록 하자. 여기서 AUTO_INCREMENT 를 설정하지 않는다면 나중에 이노테이션으로 id 값을 자동증가로 설정한다해도 테이블 내에서의 자동증가가 설정되지 않았다면 바로 오류가 나버리기 때문이다. 사실 필자도 이 문제가 발생해서 오류코드를 찾아보면서 수정했었다.
study라는 table을 생성 후 아래와 같은 창이 뜬다면 성공이다 !
이제 테이블까지 완성하였으니, Spring Boot와 Mysql을 연동해보도록 하자.
첫번째로 할것은 의존성(dependencies)를 추가해줘야한다. 프로젝트 내부의 bulid.gradle로 들어가서 dependencies 라는 필드가 있는데 이 안에서 사용하려하는 dependencies를 추가해주면 된다. 우리는 MySQL 을 사용해야하기 때문에 아래 코드를 추가해주면 된다.
implementation 'mysql:mysql-connector-java'
그리고 gradle의 변경된 내용을 로드해주자.
resources 항목에 application.properties 라는 설정파일로 들어가게 되면 처음에는 아무것도 입력되어 있지 않는데 이 부분에 내 mysql local 서버를 연결시켜주면 된다. 연결 시키는 법은 간단하게 아래 코드들을 적으면 된다.
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/study?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=<자신이 설정한 mysql local 비밀번호>
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.format_sql=true
url 부분에서 우리는 localhost:<포트번호>/<사용할DBname> 부분만 잘 입력해주면 정상적으로 연결이 될 것이다. username과 password는 mysql 를 설치하고 자신이 사용하려는 계정과 비밀번호를 입력해주면 정상적으로 연동이 될 것 이다.
이렇게 spring boot 와 mysql 을 연동하는 세팅은 끝났으며, 다음은 간단하게 회원정보를 입력 받아보도록 하자 😉