Spring Boot에서 빠르게 테스트하거나, 데이터 유지가 필요한 개발 환경을 위해 H2 Database를 설정하는 방법을 정리합니다. 별도의 데이터베이스 설치 없이 로컬에서 가볍게 사용할 수 있어 개발 및 테스트 환경에 최적화된 선택지입니다.

1. H2 Database란?

H2 Database는 가볍고 빠른 RDB로, Spring Boot와 쉽게 연동할 수 있습니다. 인메모리 모드, 파일 모드, TCP 서버 모드 등 다양한 실행 방식을 지원하며, 개발 및 테스트 환경에서 유용하게 활용됩니다.

특히, 별도의 설치 과정 없이 설정만으로 로컬에서 사용할 수 있어 개발 생산성을 높이는 데 유리합니다.

2. H2 Database 설정 방법

2.1 빠른 테스트용 (인메모리 모드)

  • 데이터가 애플리케이션 종료 시 삭제됨
  • 가장 빠른 속도를 제공하며, 테스트 환경에 적합

설정 (application.yml)

spring:
  datasource:
    url: jdbc:h2:mem:testdb
    driver-class-name: org.h2.Driver
    username: sa
    password:
  h2:
    console:
      enabled: true

jdbc:h2:mem:testdb 를 사용하면 메모리에서만 동작하며, 애플리케이션이 종료되면 데이터가 삭제됩니다.

2.2 데이터 유지용 (파일 모드)

  • 데이터가 애플리케이션 종료 후에도 유지됨
  • 파일에 데이터가 저장되므로 로컬 개발 환경에서 지속적인 사용 가능

설정 (application.yml)

spring:
  datasource:
    url: jdbc:h2:file:~/testdb
    driver-class-name: org.h2.Driver
    username: sa
    password:
  h2:
    console:
      enabled: true

jdbc:h2:file:~/testdb 를 사용하면 ~/testdb.mv.db 파일에 데이터가 저장되며, 애플리케이션을 재시작해도 데이터가 유지됩니다.

3. H2 Console 활성화

Spring Boot에서 H2 Database를 쉽게 확인하려면 H2 콘솔을 활성화하는 것이 좋습니다.

H2 콘솔 접속 방법

  1. 브라우저에서 http://localhost:8080/h2-console 접속
  2. JDBC URL을 application.yml의 설정값과 동일하게 입력 (jdbc:h2:mem:testdb 또는 jdbc:h2:file:~/testdb)
  3. Connect 버튼 클릭

4. TCP 서버 모드 설정 (다중 접속 지원)

  • 여러 개의 애플리케이션에서 같은 H2 Database에 접근해야 할 경우 유용함
  • 파일 모드와 유사하지만 별도의 프로세스로 실행됨

설정 (application.yml)

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/testdb
    driver-class-name: org.h2.Driver
    username: sa
    password:
  h2:
    console:
      enabled: true

TCP 서버 실행 방법

java -cp h2-*.jar org.h2.tools.Server -tcp -tcpAllowOthers -ifNotExists

이후 jdbc:h2:tcp://localhost/~/testdb URL을 사용해서 접속하면 됩니다.

5. 정리

실행 모드 url 설정데이터 유지 여부  용도
인메모리 jdbc:h2:mem:testdb ❌ (휘발성) 빠른 테스트
파일 jdbc:h2:file:~/testdb ✅ (유지됨) 로컬 개발 환경
TCP 서버 jdbc:h2:tcp://localhost/~/testdb ✅ (유지됨) 다중 애플리케이션 접근

H2 Database는 설정이 간단하면서도 강력한 기능을 제공하므로, 개발 중 필요에 따라 적절한 모드를 선택하여 사용하면 좋습니다.

 

+ Recent posts