공홈에서 H2 서버 파일을 다운받아 설치하고 사용하는 버전으로 Server를 띄워놓고 사용하는 방식 - 초기 DB 생성에 문제가 있을 경우 DB 파일 삭제 후 H2 Console에서 Embedded Mode로 생성 후 사용 - H2는 단순 테스트용이므로 일반적으로 사용할 일은 없을듯
Embedded Mode
H2 서버를 별도로 설치/실행하지 않고 pom.xml 등에 실행 파일을 포함한 후 애플리케이션 실행 시 내부적으로 설버를 실행하는 방식 - application에서 생성한 DB를 h2-console에서 열 수는 있지만 반대는 안됨 - 나중에 H2-console에서 데이터를 확인해야할 필요가 있을 때
In-Memory Mode
Embedded Mode와 동일하나 데이터를 데이터베이스 파일에 저장하지 않고 메모리에 쓰는 방식 console을 통해서 질의하지 않음 - 단위테스트 처럼 실제 질의할 필요는 없을 때
pom.xml
당연히 h2에 대한 의존성이 필요하다. 추가로 jpa에서 사용할 계획이므로 spring-boot-starter-data-jpa도 추가한다.
먼저 Datasource에 대한 설정과 h2 서버로의 접근을 위한 설정은 아래와 같이 해준다.
spring:
datasource: # embedded 기반 datasource 설정
driver-class-name: org.h2.Driver
url: jdbc:h2:~/spring-test
username: sa
password:
h2:
console: # h2 console 사용 설정
enabled: true
path: /h2-console
DB에 접근은 Repository와 단위테스트를 통해서 하겠지만 웹 기반의 h2 콘솔을 이용하려면 하단부의 설정이 필요하다.
참고로 memory 기반으로 사용하기 위해서는 url을 다음과 같이 지정한다.
jdbc:h2:mem:spring-test
초기화 스크립트
다음으로 사용하려는 DB의 초기화 스크립트를 실행시키는 방법이다.
spring.sql.init 속성 활용
특정 기술에 속하지 않고 DB를 초기화 할 때 application.yml 파일에 다음과 같이 schema와 초기 data를 설정할 수 있다.