H2 Database

coha96 ㅣ 2023. 7. 11. 09:55

H2 DB

: 자바 기반 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)

: H2 DB는 간단히 활용해볼 수 있는 메모리/파일 관계형 DB로 가볍고 빠르기 때문에 개발 단계에서 활용하거나 테스트 코드에도 자주 활용되는 DB

: In Memory DB (데이터 스토리의 메인 메모리에 설치되어 운영되는 방식)

: 브라우저 기반 콘솔 프로그

: 별도 설치 과정이 없고 용량은 2MB 이하로 매우 저용량 

  • Server mode (서버모드)
    • Application 서버 종료시에도 지속적으로 해당 데이터를 사용
  • Embedded mode (내장모드)
    • Application 서버 실행 종료시 데이터 모두 휘발

 

 

위와 같은 장점들 때문에 Application 개발 단계의 테스트 DB로서 많이 이용된다.

 

Spring boot가 지원하는 In-Memory DB

  • H2
  • HSQL
  • Derby

 

 


H2 DB 관련 설정

# application.yml

spring:
  redis:
    host: 127.0.0.1
    port: 6379
  datasource:
    url: jdbc:h2:mem:test
    username: sa
    password:
    driverClassName: org.h2.Driver
  h2:
    console:
      enabled: true
  jpa:
    defer-datasource-initialization: true
    database-platform: H2
    hibernate:
      ddl-auto: create-drop
    open-in-view: false
    properties:
      hibernate:
        format_sql: true
        show_sql: true

주요 옵션 설명

  • defer-datasource-initialization : 초기 데이터 입력을 진행할 수 있도록 하는 옵션(이 옵션이 없으면 테이블 생성 전에 초기 데이터 입력을 하려고하게 됨), spring boot 2.5.0 이상부터 필요한 옵션
  • hibernate: ddl-auto: create-drop : 어플리케이션 기동 시점에 테이블 생성, 종료 시점에 테이블 삭제.(운영에서는 사용 절대 금지!!)

 

우리가 코드상에 아무런 DB 설정을 하지 않는다면 Spring boot는 자동으로 기본적인 In-Memory DB를 설정하게 된다.


단점

  • 위 언급에서처럼 운영에서 H2를 썼을 때 대규모 프로젝트에서 안정성과 성능이 부족하다.
  • 백업, 복구 등에 대한 기능이 부족하다.

그러나 가볍고 설치가 쉽고 관리가 편하다는 점에서 프로젝트 초기에 DB에 대한 고민을 조금 덜어줄 수 있다.

'Spring boot' 카테고리의 다른 글

Lombok  (0) 2023.07.12
Embedded redis란?  (0) 2023.07.10