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