Spring Boot 에서 H2 DB를 사용하는 방식이 여러개 있습니다.
Server Mode, In-Memory Mode, Embedded Mode 라는 3가지 방식으로 Spring Boot에서 H2 DB를 사용할 수 있습니다.
이 3가지 방식에 대한 개념을 간단하게 정리해 보았습니다.
더 자세한 내용은 H2 공식문서에서 확인하실 수 있습니다.
Server Mode
Server Mode는 직접 H2 DB 엔진을 설치하여 사용하는 방식입니다. 애플리케이션과 상관 없는 외부에서 H2 DB엔진이 구동됩니다. 데이터가 애플리케이션 외부에 저장되므로 애플리케이션이 종료되어도 데이터가 사라지지 않습니다. 애플리케이션과 DB가 분리되어 있기 때문에 여러 애플리케이션에서 동일한 DB에 접근하기에 적합합니다.
Server Mode는 대부분의 서비스에서 사용하는 DB 저장 방식입니다.(현업에서 사용하는 방식)
H2 DBMS는 아래 공식 사이트에서 다운로드 받을 수 있습니다.
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
In-Memory Mode
In-Memory Mode는 H2 DB 엔진을 설치하지 않고, 애플리케이션 내부의 엔진을 사용하는 방식입니다. `build.gradle`, `applicaion.yaml` 이나 `application.properties` 설정을 통해 사용할 수 있습니다.
애플리케이션을 실행하면 DB 엔진이 함께 실행되고 애플리케이션이 종료되면 DB 엔진도 함께 종료됩니다.
데이터가 애플리케이션의 메모리 안에 저장되기 때문에 애플리케이션이 종료되면 데이터가 함께 사라지는 휘발성의 특징을 가지고 있습니다.
In-Memory Mode는 애플리케이션 종료시 데이터가 함께 사라지는 데이터 휘발성의 특징으로 애플리케이션의 단위 테스트 등에 많이 사용되는 DB 사용 방식입니다.
▶ application.yaml 설정 방식
# application.yaml
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:mem:{DB 이름}
username: {DB user ID}
password: {DB 비밀번호}
▶ application.properties 설정 방식
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:{DB 이름}
spring.datasource.username={DB user ID}
spring.datasource.password={DB 비밀번호}
spring에서 보통 datasource의 url에는 DB 서버의 호스트와 포트 번호, DB 이름 등의 접속 정보를 작성하는게 일반적입니다. 하지만 H2 는 여기에 `mem`을 작성하여 애플리케이션이 실행되는 메모리 자체에서 DB 를 사용하겠다고 선언함으로써 애플리케이션의 메모리 안에 저장 될 수 있습니다.
Embedded Mode
Embedded Mode는 In-Memory Mode와 동일하게 DB 엔진을 설치하지 않고, 애플리케이션에 내장된 DB 엔진을 사용합니다. 따라서 애플리케이션과 함께 실행되고 종료되는 방식입니다.
In-Memory Mode와 동일하게 `build.gradle`, `applicaion.yaml` 이나 `application.properties` 설정을 통해 사용할 수 있습니다.
In-Memory Mode와 다른 점은 데이터가 애플리케이션 외부 로컬에 저장되기 때문에 데이터가 휘발되지 않습니다. 그렇기 때문에 간단한 서비스를 제공하는 애플리케이션에 사용하기 좋은 DB 방식입니다. 그래서 주로 개발진행때 많이 사용합니다.
Spring Boot 프로젝트에서 H2 DB를 Embedded Mode로 사용하는 방법은 url을 제외하고, In-Memory Mode와 동일하게 설정해 주시면 됩니다. Embedded Mode에서는 url에 `mem`을 제거하시고 `jdbc:h2:`뒤에 DB가 저장될 로컬 경로를 설정해 주시면 됩니다.
▶ application.yaml 설정 방식
# application.yaml
spring:
datasource:
driver-class-name: org.h2.Driver
url: jdbc:h2:{DB가 저장될 경로}
username: {DB user ID}
password: {DB 비밀번호}
▶ application.properties 설정 방식
# application.properties
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:{DB가 저장될 경로}
spring.datasource.username={DB user ID}
spring.datasource.password={DB 비밀번호}
표로 3가지 모드 간단 정리
Mode | H2 Engine 다운로드 여부 |
실행 주체 | DB 저장 위치 | 사용 용도 |
Server Mode | O | 외부 | 로컬 (파일 시스템) | 배포 용도 |
In-Memory Mode | X | 스프링 | 메모리 | 테스트 용도 |
Embedded Mode | X | 스프링 | 로컬 (파일 시스템) | 개발 용도 |
Reference
- H2, "H2 Database Engine Cheat Sheet", https://www.h2database.com/html/cheatSheet.html
H2 Database Engine
Using H2 Documentation Reference: SQL grammar, functions, data types, tools, API Features: fulltext search, encryption, read-only (zip/jar), CSV, auto-reconnect, triggers, user functions Embedded jdbc:h2:~/test 'test' in the user home directory jdbc:h2:/da
www.h2database.com
- velog, "H2 DB의 3가지 모드와 사용법 - Server Mode, Embedded Mode, In-Memory Mode", https://velog.io/@jinny-l/H2-DB%EC%9D%98-3%EA%B0%80%EC%A7%80-%EB%AA%A8%EB%93%9C%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95-Server-Mode-Embedded-Mode-In-Memory-Mode
H2 DB의 3가지 모드와 사용법 - Server Mode, Embedded Mode, In-Memory Mode
💾 H2 DB H2 DB는 3가지 모드가 있다. 각 모드 별 URL이나 커넥션 풀 등 관련 상세 내용은 공식 문서에서 확인 가능하다. 본글에서는 3가지 모드와 사용법에 대해 공부한 내용을 정리했다. > H2 DB의 3
velog.io
- Tistory, "Spring boot에서 H2 DB 3가지 모드 사용하기(embedded, In-Memory, Server)", https://kukim.tistory.com/105
Spring boot에서 H2 DB 3가지 모드 사용하기(embedded, In-Memory, Server)
잘못된 내용이 있습니다. 참고용으로만 사용해주시기 바랍니다. 글을 내리려다 꾸준히 오시는 분들이 계셔서 그대로 유지하고 있습니다. 감사합니다. 환경 : Java 11 + Spring Boot 2.6.2 + Gradle 데이터
kukim.tistory.com
- Tistory, "H2 데이터베이스의 3가지 모드 Server, Embeded,In-memory (H2 database)", https://dfdfg42.tistory.com/m/entry/H2-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%9D%98-3%EA%B0%80%EC%A7%80-%EB%AA%A8%EB%93%9C-ServerEmbededIn-memory-H2-database
H2 데이터베이스 의 3가지 모드 Server,Embeded,In-memory (H2 database)
#H2 데이터베이스 h2 데이터 베이스는 3가지 모드가 있는데상세한 내용이 궁금하면 https://www.h2database.com/html/cheatSheet.html H2 Database EngineUsing H2 Documentation Reference: SQL grammar, functions, data types, tools, A
dfdfg42.tistory.com
'수수한 코딩세상 > DB' 카테고리의 다른 글
[DB] 숫자 조작 SQL 함수들 (1) | 2024.07.03 |
---|---|
[DB] SQL 사칙연산 & 문자다루는 함수 (0) | 2024.06.28 |
[DB] 집계함수 (Aggregate Functions), 중복 제거 (2) | 2024.06.25 |
[DB] 간단한 검색 기능 LIKE, %, _ (1) | 2024.06.24 |
[DB] SQL WHERE 문법 & 데이터 필터링 (3) | 2024.06.06 |