H2 Database는 Java 애플리케이션에서 주로 사용되는 가벼운 임베디드형 관계형 데이터베이스 이다. In-memory 모드와 파일 기반 모드를 지원하며, 주로 개발 및 테스트 환경에서 빠르고 간편하게 데이터베이스를 사용하기 위해 많이 활용된다. Spring과 함께 H2를 사용하면, 설정을 통해 애플리케이션 시작 시 데이터베이스를 메모리 내에 생성하고 애플리케이션 종료 시 자동으로 삭제할 수 있어 개발 및 테스트에 매우 유용하다.
H2 Database
- 가벼움: H2는 메모리 내에서 실행되며 파일 기반 데이터베이스로도 동작할 수 있지만, 주로 개발, 테스트 환경에서 빠르게 DB 설정 없이 사용할 수 있어 유용하다.
- In-memory 모드: 이 모드는 DB를 메모리에만 저장하여, 애플리케이션이 종료되면 데이터가 휘발됩니다. 주로 테스트 목적으로 사용된다.
- SQL 지원: 표준 SQL을 지원하며, 개발자가 손쉽게 데이터베이스에 질의하고 관리할 수 있다.
Spring과 H2 Database 연동
Spring Framework에서는 데이터베이스 설정을 단순화하기 위해 H2 Database와 쉽게 연동할 수 있다. 특히 Spring Boot를 사용하면, 몇 가지 설정만으로 H2를 임베디드 데이터베이스로 사용할 수 있다.
설정 방법
- 의존성 추가: build.gradle 또는 pom.xml에 H2와 관련된 의존성을 추가한다.
dependencies {
implementation 'com.h2database:h2'
}
application.properties 또는 application.yml 설정
H2 데이터베이스를 Spring Boot 애플리케이션에서 임베디드 모드로 사용하는 경우 application.properties 또는 application.yml 파일에 다음과 같이 설정할 수 있다.
application.properties:
spring.datasource.url=jdbc:h2:mem:testdb # 메모리 모드
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true # H2 웹 콘솔 활성화
application.yml:
spring:
datasource:
url: jdbc:h2:mem:testdb
driverClassName: org.h2.Driver
username: sa
password:
h2:
console:
enabled: true
H2 Console 사용:
- Spring Boot는 H2 웹 콘솔을 제공하여 브라우저에서 데이터베이스 상태를 직접 확인하고 쿼리를 실행할 수 있다. 위 설정에 따라 /h2-console 경로로 접근하여 콘솔을 사용할 수 있습니다.
- http://localhost:8080/h2-console로 접속 후 JDBC URL에 jdbc:h2:mem:testdb 또는 application.yml에 입력한 url값을 입력하고 로그인할 수 있다.