H2는 Embedded Mode 와 Server Mode가 존재합니다. 각각의 차이를 알아보고 Embedded Mode를 스프링 어플리케이션과 함께 동작하는 것을 확인해보겠습니다.
H2 데이터베이스의 두가지 모드
- Embedded Mode
- Embedded 모드에서는 H2 데이터베이스가 애플리케이션과 같은 프로세스 내에서 실행됩니다.
- 이 모드는 Server모드보다 가볍습니다.
- 메모리 사용량이 적고 성능이 일반적으로 빠릅니다.
- Server Mode
- Server 모드에서는 H2 데이터베이스가 애플리케이션과 다른 프로세스에서 실행됩니다.
- 클라이언트-서버 구조를 사용하여 여러 클라이언트가 동시에 데이터베이스에 접근할 수 있습니다.
스프링 부트에서 사용하기.
application.yml
- h2.console.enabled: true = 로컬환경에서 h2 db 사용을 허용합니다.
MODE=MySQL= MYSQL 방언을 사용한다는 것입니다.DB_CLOSE_DELAY=-1= Embedded Mode의 커넥션을 닫으면 데이터 베이스가 종료 되는걸 막아줍니다. DB 생명주기가 JVM과 함께 합니다.DB_CLOSE_ON_EXIT=FALSE= 가상 머신이 종료 될 경우 DB가 자동으로 닫히는 것을 막아주는 옵션입니다.
spring.config.activate.on-profile: local
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:core;MODE=MySQL;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
username: sa
jpa:
hibernate:
ddl-auto: create
properties:
hibernate:
format_sql: true
show-sql: true
h2:
console:
enabled: true
어플리케이션이 동작하면 jdbc:h2:mem:core 주소로 Embedded Mode 가 실행됩니다.
http://localhost:8080/h2-console 접속하기

- Saved Settings 값이 embedded 모드인지 확인합니다.
- jdbc url을 자신이application.yml에 설정한 값과 일치 시킵니다.
- 접속하면 끝입니다!.
참고자료
https://giron.tistory.com/126
https://www.h2database.com/html/features.html#do_not_close_on_exit
'Framework & Library > Spring' 카테고리의 다른 글
| Spring boot) Discord webhook logback으로 로깅 자동화하기. (0) | 2024.05.30 |
|---|---|
| Springboot 3 개발 환경 분리하기(with H2DB, MYSQL, Intellij) (0) | 2024.04.23 |
| spring boot 3.x.x swagger 설정 및 file upload 문제 해결 (0) | 2024.04.17 |