카테고리 없음

[Spring] Spring Boot, H2, Mybatis 연동하기(Gradle)

tmkimm 2023. 3. 6. 23:48

Spring Boot 프로젝트를 생성하고 H2 DB를 이용해 Mybatis를 연동하는 내용을 정리해보겠습니다.

 

개발환경
  • JDK 1.8
  • Grale
  • IntelliJ
  • Mac OS

 

 

1. Spring Boot 프로젝트 생성

https://start.spring.io/ 에 접속하여 Spring Boot 프로젝트를 생성합니다.

Dependencies는 Spring Web, Thymeleaf, H2 Database, Mybatis를 추가합니다.

"GENERATE" 버튼을 클릭하여 프로젝트를 생성하고 IntelliJ에서 폴더를 Open합니다.

 

No matching variant 에러 발생 시 해결방법

프로젝트를 Open하자마자 No matching variant of org.springframework.boot:spring-boot-gradle-plugin:3.0.4 was found 에러가 발생하는 경우 Java, SpringBoot, Gradle 간 버전 문제로,  호환되는 버전으로 맞춰줍니다.

1. Spring boot 버전 변경

build.gradle 에서 org.springframework.boot version을 2.7.0으로 변경합니다.

plugins {
	id 'java'
	id 'org.springframework.boot' version '2.7.0'
	id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.public'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

2. gradle/wrapper/gradle-wrapper.properties 파일에서 distributionUrl을 6.8.3 으로 변경합니다.

 

다시 Build 해보면 성공한 것을 확인할 수 있습니다.

 


2. H2 Database 설치

H2 홈페이지에 접속하여 자신의 OS에 맞게 설치 파일을 다운로드 합니다.

(Macbook 기준 All Platforms)

 

압축을 해제하고 ./bin/h2.sh 파일을 실행합니다.

웹 브라우저에 h2 console이 실행되고 연결 버튼을 클릭하면 데이터베이스에 접속됩니다.

초간단!


3. Mybatis 연동

프로젝트 생성 시 Mybatis Dependency를 추가했기 때문에 바로 mybatis를 연동할 수 있습니다.

src/main/resources 폴더에 application.properties 파일을 추가하여 설정 정보를 작성합니다.

(h2 console에 있는 정보와 동일)

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.sql.init.mode=always

연결 테스트를 위해 src/main/java/패키지에 TestRunner 클래스를 추가합니다.

@Autowired 애노테이션을 이용해 DataSource를 자동주입받고 Connect 정보를 가져옵니다.

이때 @Component 애노테이션을 꼭 붙여줘야 합니다.

@Component
public class TestRunner implements ApplicationRunner {

    @Autowired
    DataSource dataSource;

    @Override
    public void run(ApplicationArguments args) throws Exception {
        Connection connection = dataSource.getConnection();
        System.out.println("URL = " + connection.getMetaData().getURL());
        System.out.println("UserName = " + connection.getMetaData().getUserName());
    }
}

 

Application을 실행시켜보면 정상 연결된 것을 확인할 수 있습니다.

 


4. Database 초기화 스크립트 설정

h2 database는 로컬에 설치했기 때문에 다른 사람과 공유할 수 없습니다.

스프링이 제공해주는 Database 초기화 기능을 이용하여 어느 환경에서 실행하더라도 스키마를 일치시킬 수 있습니다.

(docs.spring.io - 9.3. 기본 SQL 스크립트를 사용하여 데이터베이스 초기화)

src/main/resources 폴더에 schema.sql, data.sql 파일을 생성합니다.

 

schema.sql

DROP TABLE IF EXISTS ITEM;

CREATE TABLE ITEM
(
    itemCode     VARCHAR(255)            PRIMARY KEY,
    itemName   VARCHAR(255)    NULL
);

 

data.sql

INSERT INTO ITEM (itemCode, itemName) values ('ITEM001', '11');
INSERT INTO ITEM (itemCode, itemName) values ('ITEM002', '22');

 

애플리케이션을 실행시킨 후 h2 console을 확인해보면 테이블이 자동으로 생성되고 데이터가 INSERT된 것을 확인할 수 있습니다!

 

 

 

 

 

 

참고글

https://bcp0109.tistory.com/315

https://atoz-develop.tistory.com/entry/Spring-Boot-MyBatis-%EC%84%A4%EC%A0%95-%EB%B0%A9%EB%B2%95