안녕하세요.
오늘은 테스트 용도로 사용할 자바 기반의 in-memory RDBMS
H2 DataBase Engine을 스프링 부트와 연동해보려고 합니다.
http://www.h2database.com/html/main.html
in-memory database 란?
메모리(RAM)에 저장되는 데이터 베이스로
단위 테스트나 개인 실습용 프로젝트처럼 데이터를 유지할 필요가 없을 때 사용한다.
H2 란?
임베드된 오픈소스의 인메모리 데이터베이스
RAM에 저장되어 애플리케이션을 재구동하면 데이터가 사라짐 (Embedded Mode 사용 시)
장점
- 설정이 필요없음
- 사용이 쉬움
- 가볍고(2MB) 빠름
- 실제 DB로 쉽게 전환하도록 뭔가를 제공한다고 함
- 표준 SQL, JDBC API 를 지원함
- 웹 콘솔 제공
Configure
- pom.xml
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
- appplication.yml
spring:
datasource:
url: jdbc:h2:mem:testdb # in-memory url
driverClassName: org.h2.Driver
username: sa # 기본 사용자명, passwd 없이 구동
h2:
console:
enabled: true # 웹콘솔 사용 여부 (in-memory 방식일 때)
path: /h2-console
위와 같이 설정 후에 애플리케이션을 구동하면 default로
resources 밑에 schema.sql, data.sql을 찾아서 디비가 초기화된다.
- schema.sql
CREATE TABLE users (
seq bigint NOT NULL AUTO_INCREMENT,
email varchar(50) NOT NULL,
passwd varchar(80) NOT NULL,
login_count int NOT NULL DEFAULT 0,
PRIMARY KEY (seq),
CONSTRAINT unq_user_email UNIQUE (email)
);
- data.sql
INSERT INTO `users` (email, passwd, login_count) values
('testUser1@gmail.com', 'testUser1', 1),
('testUser2@gmail.com', 'testUser2', 2),
('testUser3@gmail.com', 'testUser3', 2),
('testUser4@gmail.com', 'testUser4', 3),
('testUser5@gmail.com', 'testUser5', 2000);
웹 콘솔 실행
설정 파일 내의 h2 console path로 웹 콘솔에 접근할 수 있다.
--> localhost:port/h2-console
애플리케이션을 구동하고 웹 콘솔에 접속해보면
작성했던 DDL, DML과 같이 테이블 및 데이터가 생성되어 있는 것을 확인할 수 있다.
이렇게 생성 된 데이터로 간편하게 단위테스트를 진행할 수 있습니다 :)
끝!
'Spring Boot' 카테고리의 다른 글
[Spring Boot] JUnit5 로 테스트 하기 (0) | 2022.05.25 |
---|---|
JWT 를 간단히 정리해보자 (1) | 2022.05.17 |
Spring Container & Bean (2) (0) | 2021.08.30 |
Spring Container & Bean (1) (0) | 2021.08.30 |
Spring Boot 예제 2 - 객체 지향 원리 적용 (2) (0) | 2021.07.12 |