본문 바로가기
SpringBoot

[Spring Boot] 02. DB설치 및 Connection

by 청양호박이 2019. 11. 7.

안녕하세요. Ayotera Lab입니다. 우리가 일반적으로 Application을 만든다 함은 단순히 화면에 고정된 정보만 제공하는 것도 있겠지만, 보통은 Database에 수많은 데이터를 저장하고 이를 가공하여 화면에 다양한 방식으로 정제된 정보를 제공하는 것이라고 할 수 있겠습니다.

 

이번엔 이를 위해서 DB를 설치하고, Spring Boot에 설치한 DB와 Connection을 맺어 보겠습니다.

전체적인 순서는 아래와 같습니다.

  • DB설치 및 테스트 데이터베이스 생성
  • Spring Boot에 새로운 프로젝트 생성
  • Spring Boot와 DB간 Connection 

자 그럼 시작해 보겠습니다.

 

1. DB설치 및 테스트 데이터베이스 생성


요즘은 수많은 rDBMS가 있고, noSQL도 있습니다. 그 중에서도 MySQL이 Open Source중에서는 많이 쓰였는데... Oracle로 넘어가면서 정책이 변경된 부분이 있습니다. 기존 MySQL개발자들이 나와서 만든 또 다른 Open Source가 있는데 그것이 바로 MariaDB입니다. 이 아이를 설치해서 진행해 보겠습니다.

 

역시나!! 메인 사이트로 들어가 봅니다. 

https://mariadb.org/

 

MariaDB.org

Supporting continuity and open collaboration

mariadb.org

친절한 구성으로 Download를 계속 따라가다보면, 자신의 OS에 맞는 GA버전을 다운 받으실 수 있습니다. 

저는 mariadb-10.4.8-winx64.msi 이 아이를 받아 설치하겠습니다. 설치 중 무언가를 해야하는 부분에만 간략하게 설명을 하겠습니다.

 

root password설정 화면
서버스 명 및 서비스 포트 설정

설치가 끝나고, 시작에 가시면... Maria DB 폴더 안에 MySQL Client가 있고 이를 실행하면 DB사용가 가능합니다.

해당 Client를 실행하면 우선 root password를 입력하라고 하고 입력하면...

정상적으로 접속이 되었습니다. 그럼 이제 테스트를 위한 Database 및 table을 생성해 볼까요?? 음... 아래와 같이 기본 적으로 어떤 Database가 생성되었나 봤더니... 비어있는 test 가 있네요. 여기를 우선 사용하겠습니다.

테이블은 그냥 [user] 라는 이름에 테이블에 [seq : 순번] [name : 이름] 이라는 필드를 생성하고, 행을 하나 추가해 보겠습니다.

CREATE TABLE USER (
  SEQ INT NOT NULL,
  NAME VARCHAR(30)
);

INSERT INTO USER (SEQ, NAME)
VALUES (1, 'ayoteralab');

이렇게 DB설치 및 테스트 데이터베이스 생성이 완료 되었습니다.

 

 

2. Spring Boot에 새로운 프로젝트 생성


지난 글에 프로젝트를 생성하는 부분을 참조해주시고, 이번에는 Dependency를 추가합니다. DB를 다뤄야 하기 때문에 관련된 아이들을 아래와 같이 추가합니다.

2019/11/05 - [SpringBoot] - [Spring Boot] 01. 시작하기

 

[Spring Boot] 01. 시작하기

지난번에는 Spring Boot가 무엇인지 간단하게 이야기 해 보았습니다. 오늘은 이제 뭔지는 알았지만, 그래서 어떻게 Spring Boot라는 것을 사용해 볼 수 있는지에 대해서 알아보겠습니다. 순서는 아래와 같이 2가지..

ayoteralab.tistory.com

최종적인 starter로 추가하는 dependency는 아래와 같지만, 우선 DB Connection만 보기위해서는 MyBatis를 제외한

나머지만 추가해주시면 됩니다.

[JDBC API] [MySQL Driver] [Spring Web]

그렇게 되면, 아래와 같이 에러가 발생하게 됩니다. 이유는 위에 설치한 Maria DB와 Connection은 하지 않았기 때문입니다. 그럼 다음으로 Connection을 해볼까요??

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.

Reason: Failed to determine a suitable driver class

 

 

3. Spring Boot와 DB간 Connection


Spring Boot에는 속성을 설정할 수 있는 공간이 있습니다. 바로 src>main>resources폴더 안에 application.properties 라는 파일입니다. properties를 설정하는 방법은 2가지가 있는데, 기본으로 생성되는 저 파일에 작성하는 방법과... yml 파일을 새로 만들어서 작성하는 방법입니다. 2가지의 차이는 작성되는 형태인데... 저는 application.yml파일을 만들어서 진행을 해 보겠습니다.

[application.yml]

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8
    username: root
    password: test

     jdbc driver를 정해주고, url에는 serverTimezone정보를 넣어줍니다. 간혹 이와 관련된 오류가 뜰때가 있습니다. 보통

     database명 뒤로는 없어도 상관없습니다.

 

오류 형태 : java.sql.SQLException: The server time zone value 'unknown' 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.

 

정상적으로 Application이 구동된 모습

 

[DB Connection 테스트]

  • pom.xml에 junit dependency확인
  • project명에 마우스 우클릭 > properties > Java build Path > Library > Add Library > Junit 추가 > Apply

  • src > test > java > classpath 밑에 테스트용 class파일 생성 [MysqlConTest.java]
package com.example.ayoteralab;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import org.junit.jupiter.api.Test;

public class MysqlConTest {
	
	private static final String Driver = "com.mysql.cj.jdbc.Driver";
	private static final String Url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=UTF-8";
	private static final String user = "root";
	private static final String password = "test";
	
	@Test
	public void testConn() throws Exception{
		Class.forName(Driver);
		
		try {
			Connection con = DriverManager.getConnection(Url, user, password);
			String name = getName(con, 1);
			System.out.println(name);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	public String getName(Connection con, Integer seq) throws Exception{
		String res = null;
		String sqlQuery = "select name from user where seq=?";
		
		try {
			PreparedStatement pstmt = con.prepareStatement(sqlQuery);
			pstmt.setString(1, seq.toString());
			ResultSet rs = pstmt.executeQuery();
			if(rs.next()) res = rs.getString("name");
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return res;
	}

}

 

실행을 해보면 초반에 생성했던 DB내 Data를 가져오게 됩니다. 

 

이렇게 Spring Boot와 MariaDB간에 정상적으로 연결을 성공했습니다. 다음 시간에는 MVC에 대해서 알아보겠습니다.

감사합니다.

 

-Ayotera Lab-

 

 

댓글