[DB] H2 란?

2025. 4. 30. 13:20·SQL

✅ H2 란?

H2는 가볍고 빠른 내장형 데이터베이스로, 개발과 테스트 환경에서 자주 쓰이는 도구다.

이 글에서는 H2 데이터베이스의 주요 특징과 Server Mode, In-memory Mode, Embedded Mode라는 세 가지 사용 방식을 살펴볼려고 한다.

금융 IT 환경에서도 간단한 테스트나 프로토타입 개발에 H2는 유용할 것이라 생각한다.

 

 

✅ H2 데이터베이스의 특징과 장점

  • H2는 자바 기반의 오픈소스 데이터베이스로, 설치와 사용이 간단하다.

📚특징

🚀 가볍고 빠름: 메모리 기반 실행으로 빠른 성능을 제공.

💾 유연한 모드: 서버, 인메모리, 임베디드 모드를 지원.

🛠 스프링 부트와 통합 용이: 최소 설정으로 바로 사용 가능.

🧪 테스트에 최적화: 단위 테스트나 로컬 개발 환경에 적합.

💡 금융 IT에서는 주로 테스트 환경에서 계좌 이체나 결제 로직 검증용으로 H2를 활용한다.실제 프로덕션에서는 MySQL이나 PostgreSQL 같은 엔터프라이즈 DB를 쓰지만, H2는 개발 초기 단계에서 시간을 아껴준다.

 

 

✅ H2 사용 방식 3가지

H2는 Server Mode, In-memory Mode, Embedded Mode로 나뉜다. 각 모드는 용도와 설정이 다르다.

Server Mode ✅ 외부 로컬(파일 시스템) 배포 용도
In-memory Mode ❌ 스프링 메모리 테스트 용도
Embedded Mode ❌ 스프링 로컬(파일 시스템) 개발 용도

 

 

 

♐ Server Mode

  • H2를 독립적인 데이터베이스 서버로 실행하는 방식이다. 현업에서 배포 환경에 가까운 설정으로 사용할 때 유용하다.

📚특징

  • H2 엔진을 별도로 설치하고 실행.
  • 애플리케이션과 DB가 분리되어 여러 앱에서 동일 DB에 접근 가능.
  • 데이터는 로컬 파일 시스템에 저장되므로 앱 종료 후에도 유지.

 

💨사용 사례

여러 서비스가 공유하는 DB가 필요한 프로토타입이나 소규모 배포 환경.

 

 

🛠설정

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

 

💡 금융 시스템에서는 테스트용 계좌 데이터를 여러 앱에서 공유할 때 Server Mode가 유용하다.

 

 

♐ In-memory Mode

  • H2를 메모리에서 실행하는 방식으로, 데이터가 휘발성이다. 단위 테스트나 빠른 프로토타입에 최적화되어 있다.

📚특징

  • H2 엔진 설치 불필요, 스프링 부트 의존성만 추가.
  • 데이터는 메모리에 저장되어 앱 종료 시 사라짐.
  • 테스트 속도가 빠르고 환경 설정이 간단.

 

💨사용 사례

결제 로직 단위 테스트, 임시 데이터 처리.

 

 🛠설정

더보기
  1. build.gradle에 H2 의존성 추가
    implementation 'com.h2database:h2'​
  2. application.yml 또는 application.properties 설정
    # application.yml
    spring:
      datasource:
        driver-class-name: org.h2.Driver
        url: jdbc:h2:mem:testdb
        username: sa
        password:​
    # application.properties
    spring.datasource.driver-class-name=org.h2.Driver
    spring.datasource.url=jdbc:h2:mem:testdb
    spring.datasource.username=sa
    spring.datasource.password=
     
💡 금융 IT에서는 결제 트랜잭션 테스트를 빠르게 돌릴 때 In-memory Mode를 자주 쓴다. 데이터가 사라져도 테스트 케이스에 영향을 안 주니까 편하다.

 

♐ Embedded Mode

  • H2를 애플리케이션에 내장하되, 데이터를 로컬 파일에 저장하는 방식이다. 개발 환경에서 데이터 지속성이 필요할 때 유용하다.

 

📚특징

  • H2 엔진 설치 불필요, 스프링 부트와 통합.
  • 데이터는 로컬 파일 시스템에 저장되어 앱 종료 후에도 유지.
  • 간단한 애플리케이션 개발에 적합.

 

💨사용 사례

로컬 개발 환경에서 계좌나 주문 데이터를 지속적으로 테스트.

 

 

🛠설정

더보기
  1. build.gradle에 H2 의존성 추가 (In-memory Mode와 동일).
  2. application.yml 또는 application.properties 설정
    # application.yml
    spring:
      datasource:
        driver-class-name: org.h2.Driver
        url: jdbc:h2:~/test
        username: sa
        password:​
    # application.properties
    spring.datasource.driver-class-name=org.h2.Driver
    spring.datasource.url=jdbc:h2:~/test
    spring.datasource.username=sa
    spring.datasource.password=

 

💡 금융 시스템 개발 중 초기 데이터 모델링이나 로컬 테스트에서 Embedded Mode는 데이터가 유지되니 편리하다.

 

 

✅ H2 접속 실습

  • 지금은 공부하고 테스트 및 실습을 하는게 주 목적임으로  In-memory Mode, Embedded Mode 를 다뤄보았다.

접속 URL

http://localhost:8080/h2-console/

♐ In-memory Mode

spring:
  application.name: jdbc
  # H2 Database 설정
  datasource:
    driver-class-name: org.h2.Driver
    url: 'jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE'   # H2 DB 연결 주소 (In-Memory Mode)
    username: sa        # H2 DB 접속 ID (사용자 지정)
    password:        # H2 DB 접속 PW (사용자 지정)
  docker:
    compose:
      enabled: false

 # H2 Console 설정
  h2:
    console: # H2 DB를 웹에서 관리할 수 있는 기능
      enabled: true           # H2 Console 사용 여부
      path: /h2-console       # H2 Console 접속 주소

 

 

♐ Embedded Mode

spring:
  application.name: jdbc
  # H2 Database 설정
  datasource:
    driver-class-name: org.h2.Driver
    url: 'jdbc:h2:~/test'    # H2 DB 연결 주소 (Embedded Mode)
    username: sa        # H2 DB 접속 ID (사용자 지정)
    password:        # H2 DB 접속 PW (사용자 지정)
  docker:
    compose:
      enabled: false

 # H2 Console 설정
  h2:
    console: # H2 DB를 웹에서 관리할 수 있는 기능
      enabled: true           # H2 Console 사용 여부
      path: /h2-console       # H2 Console 접속 주소

 

✅ 결론

H2 데이터베이스는 Server Mode, In-memory Mode, Embedded Mode로 다양한 환경에 맞게 사용할 수 있다.

금융 IT에서는 테스트와 개발 단계에서 H2를 활용해 빠르게 프로토타입을 만들거나 로직을 검증할 수 있다.

특히 In-memory Mode는 단위 테스트에, Embedded Mode는 로컬 개발에, Server Mode는 배포 환경 시뮬레이션에 적합하다.

'SQL' 카테고리의 다른 글

[QueryDSL] QueryDSL 쓸려면 제대로 알고 쓰자  (1) 2025.05.08
[DB] 트랜잭션  (3) 2025.05.01
[SQL]UPPER/LOWER 대소문자 구분없이 Like 사용  (1) 2025.03.05
[SQL]CSV 파일을 이용해 데이터 가져오기(MY SQL)  (0) 2025.01.20
[SQL]불필요한 Query 처리방법(coalesce,<>), Pivot Table  (0) 2025.01.17
'SQL' 카테고리의 다른 글
  • [QueryDSL] QueryDSL 쓸려면 제대로 알고 쓰자
  • [DB] 트랜잭션
  • [SQL]UPPER/LOWER 대소문자 구분없이 Like 사용
  • [SQL]CSV 파일을 이용해 데이터 가져오기(MY SQL)
코딩로봇
코딩로봇
금융 IT 개발자
  • 코딩로봇
    쟈니의 일지
    코딩로봇
  • 전체
    오늘
    어제
    • 분류 전체보기 (152)
      • JavaScript (8)
      • SQL (11)
      • 코딩테스트 (30)
        • Java (15)
        • SQL (13)
      • Java (10)
      • 프로젝트 (30)
        • 트러블슈팅 (10)
        • 프로젝트 회고 (18)
      • git,Github (2)
      • TIL (38)
      • Spring (20)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java #arraylist #list #배열
    스파르타 코딩 #부트캠프 #첫ot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩로봇
[DB] H2 란?
상단으로

티스토리툴바