본문 바로가기
Java, Kotlin, Spring/Spring, Spring Boot

Spring Data - MySQL

by Wordbe 2021. 1. 20.
728x90

 

Springboot - Spring Data - MySQL

 

DBCP

DataBase Connection Pool

스프링부트는 기본적으로 HikariCP 를 사용한다.

그 외 Tomcat CP, Commons DBCP2 를 지원한다.

HikariCP 의 몇가지 속성을 살펴보자.

  • autoCommit : 자동으로 작업결과를 커밋한다.
  • connectionTimeout : DB 에게 요청이 있을 시 연결을 시도하고 있을 시간을 설정한다. 짧을수록 에러가 잘 날 것이다. (기본은 30초다.)
  • maximumPoolSize : 동시에 작업을 할 수 있는 최대 풀 개수는 CPU 코어 수보다 같거나 작다.

Hikari 설정을 프로퍼티 파일에서 할 수 있다. 자세한 속성은 HikariConfig 클래스에서 찾아 볼 수 있다.

application.properites

# DBCP
spring.datasource.hikari.maximum-pool-size=4

 

MySQL 커넥터 의존성을 추가하자.

pom.xml

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

 

 

 


Docker 로 mysql 쉽게 설치하기

1) 도커 다운로드 : https://www.docker.com/get-started

2) 도커 허브 접속 후 mysql 검색 : https://hub.docker.com/_/mysql?tab=description&page=1&ordering=last_updated

3) 터미널에서 도커 명령어를 사용하여 도커 허브로부터 mysql 도커 이미지 다운로드

$ docker pull mysql

# 도커 이미지 확인
$ docker images

 

4) 도커 이미지 실행 (컨테이너를 띄운다.)

$ docker run -p 3306:3306 --name springboot-mysql -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=springboot -e MYSQL_USER=your_username -e MYSQL_PASSWORD=1234 -d mysql

로컬의 3306 포트를 도커 컨테이너의 3306 포트와 연결해준다.

도커 컨테이너 이름은 springboot-mysql 이고, 루트의 비밀번호는 1234이며 springboot라는 데이터베이스를 하나 만들고, 새로운 유저아이디와 비밀번호를 설정한다.

-d 는 데모 모드이다.

 

5) 도커 컨테이너 실행

$ docker container exec -i -t springboot-mysql bash

# container 는 생략가능하다.
$ docker exec -i -t springboot-mysql bash

-i 는 interactive 즉, 상호대화가 가능한 CLI 를 만드는 것이고, -t 는 이미지 태그 이름이다.

컨테이너로 들어간 후 bash 를 실행시킨다.

 

기존에 3306 포트에 연결되어있던 DB 서버 등이 있다면 미리 종료해준다. 가령 백그라운드에 다른 mysql 서버가 실행중이라면 아래 명령어로 종료한다.

$ brew services stop mysql

다만 MySQL 은 GPL 라이선스이기 때문에, 수정한 소스를 모두 공개해야 하는 이슈가 있다. 하지만 이는 Database 자체를 수정하여 2차 저작물로 만들고 배포한다면 공개해야하지만, Database 와 통신하여 사용하는 웹 애플리케이션의 경우 상업용이어도 소스코드를 공개하지 않아도 된다는 말도 있다. MariaDB는 MySQL가 유료화가 되자 커뮤니티 버전(무료)처럼 만든 데이터베이스이므로 대신 사용해도 될 것 같다.

 

자바 DB 컨넥터 (JDBC) 를 사용해서, 자바 코드로 DB 를 조작하도록 해보자.

application.properties 에 아래를 추가하면 된다.

spring.datasource.url=jdbc:mysql://localhost:3306/springboot
spring.datasource.username=wordbe
spring.datasource.password=1234

 

 

 

 

 

728x90

'Java, Kotlin, Spring > Spring, Spring Boot' 카테고리의 다른 글

Springboot - Spring Data JPA  (0) 2021.01.20
Spring Data - PostgreSQL  (0) 2021.01.20
Spring Data - 인메모리 DB  (0) 2021.01.20
Springboot - Exception, HATEOAS, CORS  (0) 2021.01.19
Springboot - 템플릿, HtmlUnit  (2) 2021.01.19

댓글