3. SpringBoot와 MariaDB 연결

이번 포스트에서는 스프링 부트와 MariaDB를 연결하는 것에 대해서 살펴본다.

MariaDB 설치

https://downloads.mariadb.org/로 들어가 MariaDB를 다운받는다.

설치 버전을 사용한다면 .msi / 무설치 버전은 .zip을 다운받는다.

설치시 Next를 누르고 root 계정 입력시 passworld를 설정한다.

root 계정 설정

윈도우즈 서비스로 동작하며 서비스 이름은 기본값인 “MySQL” 을 그대로 사용한다.

“Enable netwokring” 을 체크한다. 포트는 기본값인 “3306”을 그대로 사용한다.

port 설정

그 후 설치를 완료하고 윈도우즈 시작버튼에서 잘 설치가 되었는지 확인한다.

MariaDB 확인

SLQ 개발툴 DBeaver

MariaDB는 자체 툴인 HeidSQL이 있지만 여기서는 DBeaver에 대해서 설명한다.

다운로드는 https://dbeaver.io/download/에서 Communuty Edition을 다운받는다.

DBeaver 다운

DBeaver 를 실행하면 좌측에 Database Navigator 창이 있고, 전원연결 아이콘에 마우스를 올려 놓으면 <새 데이터베이스 연결> 문구를 확인할 수 있다.

앞서 다운받은 MariaDB로 데이터베이스를 선택하면, Connection Settings 창이 뜬다.

MariaDB 설치하며 설정한 비밀번호와 동일하게 사용자이름, 비밀번호를 입력하고 저장한다.

DBeaver 설정

  • DBeaver 메뉴 중 파일 > 새로 작성 을 클릭하면 데이터베이스 연결 마법사 창이 뜬다. DataBase Navigator 에서 마우스 우클릭 > Create > Connection 를 해도 된다. 단축키는 Ctrl+N.

DBeaver Connection

  • 데이터베이스 MariaDB 선택

DBeaver MariaDB 선택

  • DB 정보입력 및 port 입력 후 생성 완료

DBeaver DB 정보입력 및 port 입력

  • Test Connection > Connected

DBeaver Connected

SpringBoot와 MariaDB 연결

스프링부트와 마리아DB를 연결하기 위한 설정이다.

gradle 설정

마리아 DB를 설정하기 위한 gradle을 설정한다.

여기서는 implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.4.1'을 dependencies에 넣어줌으로서 마리아DB의 설정을 한다.

1
2
3
4
5
6
7
8
9
10
11
12
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.0'
compileOnly 'org.projectlombok:lombok'
developmentOnly 'org.springframework.boot:spring-boot-devtools'
implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.4.1'
annotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
}

설정 후 gradle을 우클릭 후 refesh를 잊지 않는다.

gradle refesh

application.properties 설정

src/main/resources에 있는 application.properties를 설정한다.

1
2
3
4
spring.datasource.hikari.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.hikari.jdbc-url=jdbc:mariadb://localhost:3306/t_board?characterEncoding=UTF-8&serverTimezone=UTC
spring.datasource.hikari.username=root
spring.datasource.hikari.password=1234

여기서 localhost:3306/t_board에서 t_board 대신 설정된 db의 이름을 적어준다.

username과 password는 mariaDB에서 설정한 것을 입력한다.

DatabaseConfiguration 클래스 생성

메인 패키지 밑에 configuration 패키지를 생성하고 DatabaseConfiguration 클래스를 만든다.

DatabaseConfiguration 생성

아래 코드와 같이 작성한다.

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
package com.ckbs.MariaDbTest.configuration;

import javax.sql.DataSource;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;

import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
@PropertySource("classpath:/application.properties") //①
public class DatabaseConfiguration {

//②
@Bean
@ConfigurationProperties(prefix="spring.datasource.hikari")
public HikariConfig hikariConfig() {
return new HikariConfig();
}

//③
@Bean
public DataSource dataSource() throws Exception {
DataSource dataSource = new HikariDataSource(hikariConfig());
System.out.println(dataSource.toString());
return dataSource;
}
}

① application.properties를 사용할 수 있도록 설정 파일의 위치를 정해 준다.

classpath:/는 src/main/resources 경로를 뜻한다.

@PropertySource를 추가해서 다른 설정파일도 사용할 수 있다.

② application.properties에 설정했던 데이터베이스 관련 정보를 사용하도록 지정한다.

@ConfigurationProperties 어노테이션에 prefix가 spring.datasource.hikari로 설정되었기 때문에 spring.datasource.hikari로 시작하는 설정을 이용해서 히카리CP의 설정파일을 만든다.

③ 앞에서 만든 히카리CP의 설정파일을 이용해서 데이터베이스와 연결하는 데이터 소스를 생성한다. 여기서는 데이터 소스가 정상적으로 생성되었는지 확인하기 위해서 데이터 소스를 출력했다.

1
2
3
2020-06-24 10:58:10.005  INFO 3588 --- [  restartedMain] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Starting...
2020-06-24 10:58:10.071 INFO 3588 --- [ restartedMain] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
HikariDataSource (HikariPool-1)

위와 같이 로그가 나온다면 DB와의 연결이 제대로 된 것이다.

공유하기