[Spring Boot] 주식시장(Stock Market) 확인 웹사이트 만들기 (2) - MyBatis, MySQL ①

2020. 9. 13. 14:33프로젝트/etc

#Spring Boot #MyBatis #MySQL

1. Spring Boot에 MyBatis 연동하고 MySQL 테이블 생성하기

이전 글에서 URI를 받아 Controller를 이용해 웹페이지를 올려 보았습니다. 이번 시간에는 DB 연동을 위해 MyBatis를 연동하고 MySQL까지 다운받아 테이블을 생성해 IntelliJ에서 호출해 보겠습니다. 

 1) MyBatis와 MySQL?

MySQL은 DB가 적재되고 쿼리로 CRUD로 데이터를 생성, 읽기, 변경, 삭제할 수 있는 DBMS(데이터 베이스 관리 시스템) 입니다. 전 회사에서도 매출, 사용자 수 등 데이터를 MySQL로 추출했기에 현업에서 흔히 쓰는 DB 시스템 입니다. 

MyBatis라는 소프트웨어는 Spring Boot를 사용하며 처음 알게 됐습니다. 우선 JDBC와 API라는 개념을 알 필요가 있습니다. Java 기반의 프로그램에서 DB를 연동하려면 JDBC라는 API가 필요합니다. JDBC(Java DataBase Connectivity)는 원어 그대로 DB 연결을 도와주는 API 입니다. Java 클래스에서 DB주소와 메서드들을 설정해주면 연결이 필요할 때 JDBC가 해당 메서드를 호출하고, 입력한 쿼리문을 실행시켜 줍니다.

API는 뭐냐구요? 쉽게 말해 Java에서 제공하는 모든 명령어의 집합 입니다. "Hello World"를 화면에 출력시키는 예제는 아마 모든 Java 사용자들이 풀어 봤을 거라 생각됩니다. 그 때 우리는 System.out.println("Hello World")라는 명령어를 사용하죠. System.out.println 은 java.lang이란 패키지에 소속된 System 클래스와 out, println 메서드가 합쳐져 만들어진 코드입니다. java.lang에 속한 클래스들은 Java에서 제공하는 API 중 하나라고 보시면 됩니다. 따라서 JDBC API 또한, Java와 DB를 연동시키기 위해 필요한 명령어이며 Java 제공하는 시스템 중 하나라고 이해할 수 있습니다. (출처 : opentutorials

JDBC와 API를 이해했으니 MyBatis를 알 차례입니다. 사실 MyBatis는 JDBC와 같은 역할을 하는 소프트웨어 입니다. 물론 차이가 있습니다.  제가 JDBC가 아닌 MyBatis를 사용한 이유이기도 하죠. 앞서 기술했듯 JDBC는 Java 클래스 내 생성한 메서드 내 쿼리문을 입력하기 때문에 관리가 복잡합니다. 반대로 MyBatis는 메서드와 쿼리문의 작성이 Java 클래스와 XML파일로 구분되어져 있기 때문에 쿼리문과 프로그램 구현이 직관적으로 나누어집니다.

저는 처음에 장점을 읽어도 무슨 말인지 이해가 잘 되지 않았습니다. 관리에 편리하다고 해서 썼죠. MyBatis를 연동하는데도 오류 때문에 이틀이 걸렸습니다. 물론 다른 공부도 했지만, 이 프로젝트만 두고 봤을 땐 하루를 다 썼습니다. 오류가 해결되고, 직접 XML파일에서 쿼리문으로 DB 데이터를 출력해보고 블로그에 정리하기 위해 JDBC와 비교글을 읽어보니 장점이 그제서야 와닿았습니다. 프로그래밍 공부는 글을 읽고 직접 실행해보고 다시 글을 읽었을 때 비로소 체득되는 것 같습니다.  

 2) IntelliJ + MyBatis

IntelliJ에서 MyBatis를 구동하는데 시간이 굉장히 오래 걸렸습니다. Eclipse가 비교적 쉬워보였는데 학원에서 쓰고 있기 때문에 다른 IDE를 사용해보고 싶어 IntelliJ를 고수했습니다. 제일 먼저 해야할 것은 의존성 주입. dependency 추가입니다. 아래 5가지 의존성은 DB 연동을 위해 필요한 것입니다. 빌드도구는 Maven을 썼기 때문에 Maven Repository를 사용했습니다. 

mysql-connector-java, mybatis, mybatis-spring, spring-boot-starter-jdbc, mybatis-spring-boot-starter

Spring boot에서 의존성 주입을 담당하는 XML은 pom.xml 입니다.

의존성 주입이 끝나면 MySQL을 다운받아 스키마와 테이블을 생성할 차례입니다. 접근할 DB가 있어야 연동이 가능하기 때문입니다. 

MyBatis 설명이 길어져서 MySQL 사용방법은 다음 글에서 다루겠습니다.