전체글
일상
코딩
게임
블로그 운영
IT
여행

스프링 프레임워크(Spring STS) 개발 #2 - MySQL, MariaDB(마리아DB) 연결하기

 이전 글에서 스프링 프레임워크 MVC 프로젝트를 생성하고 서버에서 구동하는 것까지 확인하였습니다. 이번 글에서는 관계형 데이터베이스인 MySQL과 MariaDB(마리아DB)를 스프링 MVC 프로젝트에 연동시키는 방법에 대해서 알아보겠습니다.
 개인적으로는 MariaDB를 선호하기 때문에 MariaDB를 가지고 스프링과 연동하는 방법에 대해서 알아보겠습니다.

MySQL, MariaDB(마리아DB) 연결하기


 Oracle DB가 유료화가 되면서 많은 개발자들이 무료로 사용할 수 있는 오픈소스인 MySQL DB를 사용합니다. 하지만 MySQL이 오라클에 넘어가면서 언제 유료로 바뀔지 모르는 MySQL 라이센스 문제로, DBMS 개발자들이 MySQL5.5 버전을 기반으로 만든 것이 MariaDB입니다. 현재 많은 기업들이 MySQL에서 MariaDB로 넘어가는 추세입니다.

 MariaDB는 MySQL을 기반으로 개발된 DBMS이기 때문에 스프링에 연동하는 방법은 매우 유사합니다. MariaDB를 스프링에 연결하는 법과 같이 MySQL을 연결하는 법을 알려드리겠습니다.




MariaDB 설치하기


마리아디비


마리아DB를 다운로드 받기 위해서 아래에 링크로 들어갑니다.

https://mariadb.com/downloads/mariadb-tx


MySQL을 다운로드 받기 위해서는 아래에 링크로 들어갑니다.

https://dev.mysql.com/downloads/installer/



마리아DB 다운로드


 저는 마리아DB를 사용할 것이기 때문에 MariaDB 설치법을 설명하겠습니다. 먼저 마리아DB 다운로드 링크로 들어가서 자신의 컴퓨터 사양에 맞게 선택하고 [DOWNLOAD]를 눌려서 MariaDB를 다운 받습니다.



 다운 받은 [mariadb-버전-OS.msi] 파일을 실행시켜서 설치 위자드를 열고 [Next]를 누릅니다.




 공용 라이센스에 관한 약관을 읽고 [라이센스 동의하기]를 체크한 후에 [Next]를 누릅니다.




 MariaDB 서버 및 데이터베이스 인스턴스, 써드파티툴 HeidiSQL 설정 및 설치 화면에서 아무것도 변경하지 않고 [Next]로 누릅니다.

 개발 중인 컴퓨터로 마리아DB를 서버로 돌리지 않을 경우에는 default로 설치하여도 무관하지만, 서버로 계속해서 사용할 경우에는 디테일하게 설정하셔야 합니다. 저는 개발용으로만 사용할 것이기 때문에 default로 설치하였습니다.




 마리아DB root ID의 비밀번호를 설정합니다. 그리고 [Use UTF8 as default server's character set]을 반드시 체크하고 [Next]로 넘어갑니다. 




 Service Name과 사용할 TCP port를 설정하고 [Next]를 누릅니다. MySQL이 3306 포트를 사용하기 때문에 MySQL이 이미 설치되어 있는 PC면 다른 포트로 지정하고 [Next]를 누릅니다.




 피드백에 관한 요청은 무시하고 [Next]를 누릅니다.




 마지막으로 [Finish]를 눌러서 설치를 시작합니다.




 설치는 5분 이내에 완료가 됩니다.




 설치가 완료되었으면, 바탕화면에 생성된 [HeidiSQL] 아이콘을 선택해서 하이디SQL 툴을 엽니다.




 아주 친절하게도 [한국어]로 되어있습니다. 하이디SQL 툴은 MySQL에서도 사용가능합니다.

 MySQL Workbench를 사용하시는 분들은 하이디SQL로 갈아타시는 것도 좋습니다.

 그럼 [신규]를 눌러서 연결할 계정을 입력합니다.




 마리아DB는 MySQL을 기반으로 제작되었기 때문에, 네트워크 유형은 MySQL(TCP/IP)로 하고 호스트명/IP는 기본으로 되어있는 127.0.0.1을 그대로 씁니다.

 그리고 사용자에 root를 입력하고 암호를 입력합니다. 포트는 설치시 입력한 포트를 입력합니다. 모든 사항을 입력했으면 [열기]를 누릅니다.




정상적으로 접속이 되면 위에 이미지와 같은 데이터베이스들이 나옵니다. MySQL도 마리아DB의 설치법과 크게 다르지 않기 때문에 따로 알려드리지는 않겠습니다.




MySQL, MariaDB 스프링 MVC 프로젝트 연결하기


 다음은 스프링과 DB를 연결할 JDBC를 다운 받겠습니다.


MariaDB JDBC Maven Repository

https://mvnrepository.com/artifact/org.mariadb.jdbc/mariadb-java-client


MySQL JDBC Maven Repository

https://mvnrepository.com/artifact/mysql/mysql-connector-java


 위에 링크를 통해 설치 되어있는 DB에 맞는 Maven Repository로 들어갑니다. 저는 MariaDB JDBC로 들어갔습니다.




 이곳에서 사용할 JDBC의 버전을 선택합니다. 저는 2.0.X 버전은 아직 불안해서 1.6.3 버전으로 들어갔습니다.




 들어간 페이지에서 [Maven] 탭 아래에 있는 코드를 복사합니다.




 그리고 프로젝트 폴더에 있는 [pom.xml]을 엽니다. 복사한 코드를 </dependencies> 바로 상단에 붙여넣기를 하고 [저장]을 합니다. 저장이 되면 자동으로 JDBC 라이브러리를 다운 받습니다.

 MySQL도 위와 동일한 방식으로 진행하시면됩니다.



스프링에서 DB 연결 확인하기



 MVC 프로젝트에서 [src/test/java] 폴더 안에 있는 패키지를 오른쪽 클릭한 다음 Class를 하나 만듭니다.




  DB 테스트용 Class이기 때문에 Class Name은 자유롭게 하셔도 됩니다. 저는 DB_Test.java로 하고 클래스를 생성했습니다.


src/test/java/hanazuou.imas.mlst.DB_Test.java
import java.sql.Connection;
import java.sql.DriverManager;
import org.junit.Test;

public class DB_Test {
@Test
public void test() throws Exception {
    Class.forName("org.mariadb.jdbc.Driver"); // 마리아DB
    // Class.forName("com.mysql.jdbc.Driver"); MySQL

    Connection con = DriverManager.getConnection("jdbc:mariadb://127.0.0.1:3306/test", "root",     "passwd");// 마리아DB
    // Connection con =     DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","passwd"); MySQL
    System.out.println(con);
    }
}


 DB 접속 확인을 위해 위에 코드를 입력합니다. 위에 코드에서 "passwd"는 본인이 설정한 root의 비밀번호를 입력해주시면 됩니다. URL(127.0.0.1:3306/test)에 있는 "/test"는 데이터베이스명입니다.  MariaDB의 경우 자동으로 생성되어 있습니다. MySQL에 없을 경우 데이터베이스를 하나 생성하고 입력해주시기바랍니다.

 MySQL은 MariaDB 코드를 지우거나 주석처리하고, MySQL 주석을 풀면됩니다.


 만약 @Test 가 되지 않는 경우 junit이 없거나 하위 버전일 경우입니다.


junit Maven

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.7</version>

<scope>test</scope>

</dependency>


 그럴 경우 상단에 junit 라이브러리 코드를 [pom.xml]에 넣어주시기 바랍니다.




 마지막으로 DB 연결 테스트를 위해, DB_Test.java 파일을 오른쪽 클릭한 후에 [Run As] ▶ [JUnit Test]를 누릅니다.



하단 콘솔창에 Connection 객체가 생성되어서 출력이 된다면 정상적으로 연결된 것입니다.



도움이 되셨으면 공감을 눌러주세요!