Framework/Spring boot

Spring boot + H2 사용하기

MoonjuLee 2023. 11. 7. 22:32

H2 DB란?

자바로 작성된 관계형 데이터베이스 관리 시스템이다. 특징은 작은 설치 공간(2.5MB)을 차지하고, 서버 모드, 임베디드 모드, 혼합모드를 지원한다.

 

실행 모드?

  • 서버 모드 : 직접 서버를 설치하여(H2 다운로드) 애플리케이션이 JDBC 또는 ODBC를 사용하여 연결. TCP/IP를 통해 전송된다. 임베디드보다 속도가 느림.
  • 임베디드 모드 : 애플리케이션이 JDBC를 사용하여 동일한 JVM 내에서 데이터베이스를 실행. 가장 빠르고 쉬운 모드.
  • 혼합 모드 : 서버 모드와 임베디드 모드를 결합한 것. 

자세한 설명은 공식문서를 읽어보시면 좋을 것 같습니다!

 

사용법

1. Gradle 의존성 라이브러리 추가

dependencies {
    runtimeOnly 'com.h2database:h2:'
}

 

2. 모드 별 yml 파일 설정(예시 몇 개만... 더 많은 설정은 공식문서 참조)

- TCP/IP를 사용하는 서버 모드

spring:
  datasource:
    driver-class-name: org.h2.Driver 
    url: jdbc:h2:tcp://localhost/~/test
    username: sa
    password:       #처음에는 비밀번호가 설정되어 있지 않다.
    
  h2:
    console:
      enabled: true #H2 콘솔을 사용하기 위해

 

- 인메모리 : 데이터가 애플리케이션 종료 후 사라짐.(휘발성)

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:mem:testdb #인메모리 모드의 testdb라는 이름을 가진 인메모리db
    username: sa
    password:

  h2:
    console:
      enabled: true

 

- 임베디드 로컬 연결 : 데이터가 물리적으로 남는다.(비휘발성)

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:file:./data/sampledb #물리적으로 데이터가 저장될 경로(현재 프로젝트 경로에 data)
    username: sa
    password:

  h2:
    console:
      enabled: true

 

- 내가 사용한 방식 임베디드 연결

spring:
  datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:~/test
    username: sa
    password:

  h2:
    console:
      enabled: true
  jpa:
    open-in-view: true
    show-sql: true
    hibernate:
      ddl-auto: update #create는 데이터가 없어지니 조심~

 

3. 콘솔

  • 모드 선택

모드 선택

  • 인메모리 내 이름 지정 URL 설정

인메모리 내 이름 지정 URL 설정

  • 내가 사용한 임베디드 방식 접속 정보

내가 사용한 임베디드 방식 접속 정보

  • 콘솔 접속

ddl-auto 옵션으로 만들어진 테이블

4. 정리

  • H2 데이터베이스를 사용하기 위해 구글링을 한 결과 많은 정보들이 혼용되어 있다고 생각하여 공식문서를 참고하여 정리를 해보았습니다.
  • 각각의 접속 모드에 장단점이 존재하여 어떤 모드를 어느 상황에 사용하여야 하는지에 대한 고민을 더 해보아야 할 것 같습니다.

 

5. 트러블 슈팅

  • 데이터베이스 만들기(윈도우)

윈도우 기준

 

데이터베이스 만들기

 

해당 데이터베이스를 만들 경우 path를 잘 설정해서 만들자!

이런 식으로 만들어진다.

 

  • yml을 파일 설정을 잘하자!

 

참고

https://www.h2database.com/html/main.html

 

H2 Database Engine

H2 Database Engine Welcome to H2, the Java SQL database. The main features of H2 are: Very fast, open source, JDBC API Embedded and server modes; in-memory databases Browser based Console application Small footprint: around 2.5 MB jar file size     Supp

www.h2database.com