Language/SQL

내장형 H2 데이터베이스 사용

용용띠용 2025. 6. 26. 17:53

방식 3가지

Mode H2 다운로드 여부 실행 주체 DB 저장 위치
Server Mode O 외부 로컬(파일 시스템)
In-Memory Mode X 스프링 메모리
Embedded Mode X 스프링 로컬(파일 시스템)

 

1) Server Mode

: 직접 엔진 설치해 사용한다.

- 외부 db 엔진이 구동된다.

- 애플리케이션 외부에 데이터가 저장되어 애플리케이션 종료 시에도 데이터가 유지된다.

 

2) In-Memory Mode

: 엔진을 설치하지 않고 애플리케이션 내부 엔진을 사용한다.(애플리케이션에 DB 엔진 내장)

- build.gradle 및 application.properties 설정을 통해 실행 가능하다.

# application.yml
spring:  
    datasource:    
        driver-class-name: org.h2.Driver
        url: jdbc:h2:mem:{DB 이름}
        username: sa
        password:
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:{DB 이름}
spring.datasource.username=sa
spring.datasource.password=

- 애플리케이션과 DB 엔진이 함께 실행, 종료된다.

- 애플리케이션 메모리에 데이터가 저장되어 애플리케이션 종료 시 데이터가 사라진다.

     => 단위 테스트 등에서 많이 사용한다.

 

3) Embedded Mode

: 엔진을 설치하지 않고 애플리케이션 내부 엔진을 사용한다.

- build.gradle 및 application.properties 설정을 통해 실행 가능하다.

# application.yml
spring:
  datasource:
      driver-class-name: org.h2.Driver
      url: jdbc:h2:{DB가 저장될 경로}    
      username: sa    
      password:
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:~/testdb			// 경로를 ~/testdb로 설정한 예시로 ~는 홈 디렉터리를 의미하며 홈 디렉터리 아래 testdb.mv.db파일로 저장된다.
spring.datasource.username=sa
spring.datasource.password=

- 애플리케이션과 DB 엔진이 함께 실행, 종료된다.

- 애플리케이션 외부에 데이터가 저장되어(로컬)  애플리케이션 종료 시에도 데이터가 유지된다.

     => 간단한 애플리케이션에 적합하다.