본문 바로가기

Spring

[Spring boot] DB(H2)의 세가지 사용 방식

 


 

H2 데이터 베이스

정의

자바로 작성된 경량화된 오픈 소스 관계형 데이터 베이스 관리 시스템입니다.

 

특징

  • H2는 자바로 작성되어 있어 Java 애플리케이션에 쉽게 임베드 할 수 있습니다.
  • 용량이 작아, 주로 개발 및 테스트 환경에서 사용되며, 별도의 설치 없이 사용할 수 있습니다.
  • 기본적으로 메모리 기반으로 데이터를 관리하여 속도가 빠릅니다. 하지만 애플리케이션 재시작 시 데이터가 초기화되는 특징이 있습니다.

 


 

3가지 방식

1. Server Mode

  • 애플리케이션과 DB가 분리되어 있기 때문에 여러 애플리케이션에서 동일한 DB를 사용하기에 적합합니다
    • 따라서 외부 컴퓨터에 DB 엔진을 설치하고 엔진을 구동하여 사용합니다. (현업 방식)

 

 

2. In-Memory Mode

  • 애플리케이션에 DB 엔진이 내장되어 애플리케이션과 함께 실행되고 종료되는 방식입니다.
    • 데이터가 애플리케이션의 메모리에 저장되기 때문에, 애플리케이션 종료 시 모든 데이터가 사라지는 휘발성의 특징을 갖습니다.
  • Spring Boot 내에서 인메모리 모드로 사용하려면 `application.yml` 또는 `application.properties`에서 아래와 같이 설정을 해줘야 합니다.
# application.yml
spring:  
    datasource:    
        driver-class-name: org.h2.Driver
        url: 'jdbc:h2:mem:{DB 이름};DB_CLOSE_DELAY=-1'
        username: sa
        password:
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url='jdbc:h2:mem:{DB 이름};DB_CLOSE_DELAY=-1'
spring.datasource.username=sa
spring.datasource.password=

 

  • `DB_CLOSE_DELAY` : 데이터베이스가 언제 닫힐지를 제어합니다.
    • `-1` : 애플리케이션이 실행되는 동안 데이터베이스를 열린 상태로 유지합니다. 

 

 

3. Embeded Mode

  • 인메모리 모드와 동일하게 애플리케이션에 DB 엔진이 내장되어 애플리케이션과 함께 실행되고 종료되는 방식입니다.
  • 데이터를 로컬에 저장하기 때문에 데이터 휘발에서 자유롭습니다.
  • Spring Boot 내에서 임베디드 모드로 사용하려면 `application.yml` 또는 `application.properties`에서 아래와 같이 설정을 해줘야 합니다.
# application.yml
spring:
  datasource:
      driver-class-name: org.h2.Driver
      url: jdbc:h2:{DB가 저장될 경로}    
      username: sa    
      password:
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:{DB가 저장될 경로}
spring.datasource.username=sa
spring.datasource.password=
  • 파일 형태로 DB가 저장될 경로를 넣어주시면 됩니다.

 

  • 이렇게 `test.mv` 파일로 저장됩니다.

 


 

정리하기

Mode H2 다운로드 여부 실행 주체 DB 저장 위치 사용 용도
Server Mode O 외부 로컬(파일 시스템) 배포 용도
In-Memory Mode X Spring 메모리 테스트 용도
Embedded Mode X Spring 로컬(파일 시스템) 개발 용도

 

 

 

 

 

https://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