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 설정
- 내가 사용한 임베디드 방식 접속 정보
- 콘솔 접속
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