H2 Database(H2DB)는 경량 오픈 소스 관계형 데이터베이스(RDBMS)로, Java로 작성되었으며 임베디드 모드와 서버 모드를 모두 지원하는 데이터베이스이다. H2는 빠른 성능과 간편한 설정으로 인해 테스트 환경, 개발 환경, 경량 애플리케이션에서 많이 사용된다.
주요 특징
경량 & 메모리 기반
- 파일 기반 또는 메모리 기반으로 동작 가능
- 데이터베이스 크기가 작고 속도가 빠름
임베디드 & 서버 모드 지원
- 임베디드 모드: 애플리케이션 내부에서 실행 (외부 프로세스 필요 없음)
- 서버 모드: 네트워크를 통해 여러 클라이언트가 접근 가능
Java 기반 & JDBC 지원
- 100% Java로 개발되었으며 JDBC API를 지원
- Java 애플리케이션에서 손쉽게 연동 가능
SQL 표준 준수
- 대부분의 SQL-92 표준을 지원
- MySQL, PostgreSQL 등의 DBMS와 유사한 SQL 문법 제공
빠른 실행 속도
- 데이터가 메모리에 저장될 경우 매우 빠른 속도를 자랑
- 애플리케이션 개발 및 테스트 시 빠른 데이터 처리가 가능
자동 종료 및 초기화 기능
DB_CLOSE_ON_EXIT=TRUE 설정을 통해 애플리케이션 종료 시 자동으로 DB 종료
- 개발 및 테스트 환경에서 데이터베이스를 매번 초기화할 수 있음
사용 방법
H2 데이터베이스 다운로드 & 실행
- 공식 웹사이트에서 다운로드 가능
h2-<version>.jar 파일을 실행하여 웹 콘솔 접근 가능
java -jar h2-<version>.jar
Spring Boot에서 H2 설정하기
application.properties 예제 (임베디드 모드)
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
jdbc:h2:mem:testdb: 메모리 기반 DB 사용
spring.h2.console.enabled=true: H2 웹 콘솔 활성화 (http://localhost:8080/h2-console)
H2 웹 콘솔 접속
http://localhost:8080/h2-console 접속
- JDBC URL:
jdbc:h2:mem:testdb 입력 후 연결
장단점
장점
- 가벼운 데이터베이스 (설치 필요 없음)
- 빠른 실행 속도 (메모리 기반 가능)
- Java 애플리케이션과의 쉬운 연동
- 개발 및 테스트 환경에 최적화
- SQL 표준 지원
단점
- 대용량 데이터 처리에는 적합하지 않음
- 멀티 유저 환경에서는 성능 저하 가능
- 트랜잭션 처리 기능이 상용 DB보다 제한적
활용 사례
- Spring Boot 애플리케이션 개발 & 테스트
- JUnit 테스트에서 임시 DB로 활용
- 경량 애플리케이션의 내장형 데이터베이스
- 데이터베이스 학습 및 프로토타이핑
정리
- **H2 Database는 Java 기반의 가벼운 관계형 데이터베이스(RDBMS)
- 메모리 및 파일 기반으로 동작 가능하며, 빠른 속도가 장점
- Spring Boot 등 개발 및 테스트 환경에서 많이 사용
- 대용량 데이터 처리보다는 임시 데이터 저장 및 개발용 DB로 적합