Framework & Library/Spring

Spring boot 3. H2 DB와 CONSOLE 환경 설정하기

ruu++ 2024. 4. 24. 13:41

H2는 Embedded Mode 와 Server Mode가 존재합니다. 각각의 차이를 알아보고 Embedded Mode를 스프링 어플리케이션과 함께 동작하는 것을 확인해보겠습니다.

H2 데이터베이스의 두가지 모드

  1. Embedded Mode
    • Embedded 모드에서는 H2 데이터베이스가 애플리케이션과 같은 프로세스 내에서 실행됩니다.
    • 이 모드는 Server모드보다 가볍습니다.
    • 메모리 사용량이 적고 성능이 일반적으로 빠릅니다.
  2. 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 접속하기

H2 디비 연결순서

  1. Saved Settings 값이 embedded 모드인지 확인합니다.
  2. jdbc url을 자신이application.yml에 설정한 값과 일치 시킵니다.
  3. 접속하면 끝입니다!.

참고자료

https://giron.tistory.com/126
https://www.h2database.com/html/features.html#do_not_close_on_exit