본문 바로가기

IT/Spring

[SpringBoot] H2 데이터베이스 사용하기

1. H2 데이터베이스란?

H2는 자바 기반 오픈소스 RDBMS입니다. 주로 인 메모리 데이터베이스로 사용되며 기능 테스트 할 때 유용합니다.

인 메모리 데이터베이스는 휘발성 데이터베이스이기 때문에 컴퓨터를 종료하면 모든 데이터가 삭제됩니다.

H2 DB를 따로 설치할 수 있지만 build.gradle dependency로 추가하면 약 2MB크기의 라이브러리로 H2 DB를 사용할 수 있습니다.

지금부터 간단하게 hibernate를 이용해서 h2 db에 테이블을 생성해보겠습니다.

 

2. build.gradle

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jdbc'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
}

 

3. application.yml

spring:
  datasource:
    url: jdbc:h2:mem:test;MODE=MariaDB;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
    username: sa
    password:
    driverClassName: org.h2.Driver
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
    hibernate:
      ddl-auto: update
    show-sql: true
    properties:
      hibernate:
        format_sql: true
  h2:
    console:
      enabled: true
      path: /h2-console

 

 

4. Member Entity 생성

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class Member {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String name;
    
    //getter, setter 생략
}

 

5. spring boot 실행

o.s.b.a.h2.H2ConsoleAutoConfiguration    : H2 console available at '/h2-console'. Database available at 'jdbc:h2:~/test'
o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [name: default]
org.hibernate.Version                    : HHH000412: Hibernate Core {5.4.9.Final}
o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.1.0.Final}
org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.H2Dialect

Hibernate: 
    
    drop table member if exists
Hibernate: 
    
    create table member (
       id integer generated by default as identity,
        name varchar(255),
        primary key (id)
    )
spring boot가 실행되면서 h2가 로딩되는 것을 볼 수 있습니다.
그리고 hibernate에 의해서 member table이 생성되었습니다.

 

6. h2 console

http://localhost:포트번호/h2-console

위 url로 접속하면 아래와 같은 h2 로그인 화면이 나타납니다. 

DB 연결 후 왼쪽 메뉴에 hibernate를 이용해서 생선한 Member 테이블을 확인할 수 있고 필요에 따라서 직접 sql query를 입력할 수 있습니다.