article thumbnail image
Published 2022. 2. 14. 22:02

 

 

 

안녕하세요.

오늘은 테스트 용도로 사용할 자바 기반의 in-memory RDBMS

H2 DataBase Engine을 스프링 부트와 연동해보려고 합니다.

 

http://www.h2database.com/html/main.html

 

H2 Database Engine

H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size     Supp

www.h2database.com

 

 

 

in-memory database 란?

 

메모리(RAM)에 저장되는 데이터 베이스로

단위 테스트나 개인 실습용 프로젝트처럼 데이터를 유지할 필요가 없을 때 사용한다.

 

 

H2 란?

 

임베드된 오픈소스의 인메모리 데이터베이스

RAM에 저장되어 애플리케이션을 재구동하면 데이터가 사라짐 (Embedded Mode 사용 시)

 

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과 같이 테이블 및 데이터가 생성되어 있는 것을 확인할 수 있다.

 

 

 

 

이렇게 생성 된 데이터로 간편하게 단위테스트를 진행할 수 있습니다 :)

끝!

 

복사했습니다!