Spring Boot와 MyBatis의 연동 - Maven 의존성 설정
728x90

안녕하세요!

항상 나아가는 개발자 pink_salt 입니다!

코드프레소 Java 웹 개발 체험단 활동을 하고 있습니다.

이제는 Spring Boot와 MyBatis의 연동에 대해서 공부해보겠습니다.

'Spring Boot 웹 개발 초급'강의를 듣고 공부한 내용을 정리하여 포스팅을 진행하였습니다.


Spring Boot에서 MyBatis 설정

1. Maven 의존성 설정

-> MyBatis 및 H2 Database

2. 스프링 애플리케이션 설정

-> application.properties 설정

 

Maven

Java프로젝트에서 사용되는 빌드 자동화 도구

소스코드를 실행 가능한 SW 산출물로 만드는 과정인 빌드를 해주는 도구입니다.

Maven의 2가지 주요기능으로는

1. 프로젝트 구성 및 빌드 관리

2. 라이브러리 의존성 관리

가 있습니다.

이번 게시물에서는 '라이브러리 의존성 관리' 기능에 초점을 맞추어 보겠습니다.

 

Maven의 라이브러리 의존성 관리

사용할 외부 라이브러리 정보를 명시하면 자동 다운로드 후 사용할 수 있습니다.

  • 개발자가 필요한 라이브러리를 일일이 다운로드 받아 설정할 필요가 없습니다.
  • pom.xml 파일의 dependencies 영역에 사용할 라이브러리 정보를 설정하면 됩니다.

사용할 라이브러리가 Maven Repository에 등록되어 있어야합니다.

Maven Central Repository -> Maven에서 관리하는 중앙 Repository입니다.

즉, Maven Central Repository에 라이브러리를 요청하면 Maven Central Repository에 등록되어 있는 라이브러리를 다운받아 사용할 수 있습니다.

그러면 pom.xml 파일이 중요한데요!

pom.xml

pom -> Project Object Model

Maven이 프로젝트를 빌드하기 위해서 필요한 정보를 기술하는 XML 파일입니다.

그 안에는 이러한 정보들이 있습니다.

  • 프로젝트의 정보
  • 프로젝트가 필요로 하는 라이브러리 의존성 정보
  • 빌드 단계에서 사용되는 정보

 

최소한의 pom.xml

  • project 태그로 시작
  • groupId : 다양한 프로젝트 간의 식별 가능한 고유한 이름(보통 회사 url의 역순)
  • artifactId : 프로젝트 하위의 애플리케이션 이름, 빌드 후 생성되는 산출물 파일명
  • version : 현재 개발중인 application의 버전

  • dependencies 태그 하위에 다수의 dependency로 라이브러리를 명시할 수 있습니다.
  • dependency 태그에 groupId, artifactId, version 등을 명시할 수 있습니다.

 

MyBatis 사용하기 위한 Maven 의존성 설정

pom.xml에 MyBatis와 H2 Database를 위한 Maven 의존성 추가해보겠습니다.

이때 version을 명시하지 않으면 default 최신 버전으로 적용됩니다.

이렇게 denpendency를 작성하면 적용이 되는데 이것은 External Library에 들어가면 확인할 수 있습니다.

예전 Spring boot가 나오기 전에는 pom.xml이 엄청 길었는데

Spring Boot가 나오고 나서는 spring-boot-starter가 생겨서 짧게 작성해도 자동으로 다수의 라이브러리가 적용됩니다.

이렇게 의존성 관리가 간편해진 것을 볼 수 있습니다.

 

이렇게 pom.xml에 작성하지 않고도 dependency를 추가할 수 있습니다.

spring initializr에서 Add dependencies를 통해서 일차적으로 간편하게 넣을 수 있습니다.

추가적으로 필요하다면 pom.xml에 작성해서 활용하면 됩니다.

 

만약 h2 Database dependency를 추가하려면 google에 maven h2 database를 검색하면

MVN Repository 사이트에서 만들어져있는 dependency 를 복사해서 pom.xml에 간편하게 사용할 수 있습니다.


H2 Database

경량 RDBMS로 메모리에 데이터 저장 가능합니다.

별도의 설치 없이 Maven 의존성만으로 Spring Boot에서 활용 가능합니다.

개발 단계에서 테스트용으로 가볍게 활용 가능합니다.

 

Spring 애플리케이션 설정

Spring 애플리케이션이 어떻게 구성되어야 하는지에 대한 부가적인 정보

-> Spring 애플리케이션이 시작하는 시점에 읽습니다.

application.properties 파일에 설정 정보를 추가합니다.

-> application.yaml 포맷을 사용하기도 합니다.

resources 디렉토리 하위에 위치합니다.

-> key=value형태로 설정 정보를 작성합니다.

설정 정보는 라이브러리 별 공식 문서를 참고하여 작성하면 됩니다.

 

예시 ) Spring 애플리케이션 설정

port 정보 변경

기본 포트는 8080인데 8081로 설정 변경하려면

server.port=8081

을 작성하면 설정이 변경됩니다.

 

H2 Database 설정

h2 database의 접속 url 및 계정 정보를 설정해야합니다.

  • 첫 줄은 DB 연결을 위해 org.h2.Driver를 사용한다는 것입니다.

com.mysql.cj.jdbc.Driver, oracle.jdbc.driver.OracleDriver 등 사용가능합니다.

  • 둘째 줄은 DB 접속 URL, [protocol]:[host][port, db/schema명 등]

ex) jdbc:mysql://localhost:3306/todo

ex) jdbc:postgresql://localhost:5432/todo

  • 셋째 줄은 DB에 접속하기 위한 사용자 이름이고
  • 넷째 줄은 DB에 접속하기 위한 패스워드입니다.

다음 설정에서

  • 첫 줄은 h2 웹 콘솔을 사용한다는 것이고
  • 둘째 줄은 웹 콘솔의 uri path는 /h2-console로 한다는 것입니다.

 

이렇게 http://localhost:8080/h2-console에 접속하면

자신이 설정한 대로 작성을 해서 Connect하면 웹 콘솔을 확인할 수 있습니다.

 

DB Table 및 데이터의 초기화

DB 테이블(Schema)의 초기화를 위해서는

Spring Boot 애플리케이션 시작 시점에 schema.sql의 SQL문이 자동으로 실행될 수 있습니다.

또한 data.sql에 sql문을 작성해 놓으면 Spring Boot 애플리케이션 재시작 시에도 그 상태로 데이터 베이스가 생성됩니다.


MyBatis 설정

MyBatis 설정을 위해서는 application.properties에 설정을 추가해야합니다

mybatis의 설정 파일의 위치를 설정하는 것인데

이것으 mybatis 디렉토리 밑에 mybatis-config.xml을 보면 mybatis의 설정이 되어 있으니까 이것을 보고 작업을 수행하라는 뜻입니다.

resources 디렉토리 하위에 mybatis 디렉토리를 생성하고

resources/mybatis 디렉토리 하위에 mybatis-config.xml 파일을 생성합니다.

mybatis-config.xml 파일에 아래 코드를 작성해야합니다.

mappers 안에는 mapper가 여러개 들어갈 수 있습니다.

이러면 mapper 파일의 위치를 알려줘야 합니다.

mapper.xml 파일은 실제 데이터 베이스에 접근하기 위한 sql문이 들어간 파일입니다.

저위에서 경로를 말해준 것과 같이 mapper 디렉토리 하위에 mapper.xml 파일이 들어가야 합니다.

 

todo-mapper.xml 파일에는 sql문이 들어간 코드를 작성해야합니다.


여러 설정 파일이 나왔는데 정리하자면


다음시간에는

Mybatis를 활용한 Todo API를 구현하는 것에 대해서 알아볼 것입니다.

열심히 나아가는 개발자 이었습니다.

go go!

코드프레소 URL: https://www.codepresso.kr/

 

커리어 완성 실무 IT 교육 플랫폼 , 코드프레소(codepresso)

기업이 원하는 모든 IT 지식, 코드프레소에서 만나세요.

www.codepresso.kr

 

728x90
반응형