H2 DB
: 자바 기반 오픈소스 관계형 데이터베이스 관리 시스템(RDBMS)
: H2 DB는 간단히 활용해볼 수 있는 메모리/파일 관계형 DB로 가볍고 빠르기 때문에 개발 단계에서 활용하거나 테스트 코드에도 자주 활용되는 DB
: In Memory DB (데이터 스토리의 메인 메모리에 설치되어 운영되는 방식)
: 브라우저 기반 콘솔 프로그
: 별도 설치 과정이 없고 용량은 2MB 이하로 매우 저용량
- Server mode (서버모드)
- Application 서버 종료시에도 지속적으로 해당 데이터를 사용
- Embedded mode (내장모드)
- Application 서버 실행 종료시 데이터 모두 휘발
위와 같은 장점들 때문에 Application 개발 단계의 테스트 DB로서 많이 이용된다.
Spring boot가 지원하는 In-Memory DB
- H2
- HSQL
- Derby
H2 DB 관련 설정
# application.yml
spring:
redis:
host: 127.0.0.1
port: 6379
datasource:
url: jdbc:h2:mem:test
username: sa
password:
driverClassName: org.h2.Driver
h2:
console:
enabled: true
jpa:
defer-datasource-initialization: true
database-platform: H2
hibernate:
ddl-auto: create-drop
open-in-view: false
properties:
hibernate:
format_sql: true
show_sql: true
주요 옵션 설명
- defer-datasource-initialization : 초기 데이터 입력을 진행할 수 있도록 하는 옵션(이 옵션이 없으면 테이블 생성 전에 초기 데이터 입력을 하려고하게 됨), spring boot 2.5.0 이상부터 필요한 옵션
- hibernate: ddl-auto: create-drop : 어플리케이션 기동 시점에 테이블 생성, 종료 시점에 테이블 삭제.(운영에서는 사용 절대 금지!!)
우리가 코드상에 아무런 DB 설정을 하지 않는다면 Spring boot는 자동으로 기본적인 In-Memory DB를 설정하게 된다.
단점
- 위 언급에서처럼 운영에서 H2를 썼을 때 대규모 프로젝트에서 안정성과 성능이 부족하다.
- 백업, 복구 등에 대한 기능이 부족하다.
그러나 가볍고 설치가 쉽고 관리가 편하다는 점에서 프로젝트 초기에 DB에 대한 고민을 조금 덜어줄 수 있다.
'Spring boot' 카테고리의 다른 글
Lombok (0) | 2023.07.12 |
---|---|
Embedded redis란? (0) | 2023.07.10 |