본문 바로가기
스프링 부트

스프링부트 Application.properties에서 H2 설정 하는법

by illlilillil 2022. 1. 19.

H2 도입

진행 중인 프로젝트에서 개발용으로 H2 디비를 사용하기로 하였고 실제 서비스용으로 Postgresql을 사용하기로 정하였다.

H2 설정을 위해 공부를 하던 중 H2방식에도 여러 가지 방식이 있는 것을 처음 알았다. spring.datasource.url 이 코드를 어떤 방식으로 설정하느냐에 따라 달라지게 된다.

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:tcp://localhost/../test
spring.datasource.username=sa
spring.datasource.password=
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create-drop

1. 인메모리 방식

spring.datasource.url=jdbc:h2:mem:ager

위처럼 URL을 작성하게 되면 인메모리 방식으로 사용하게 된다. 스프링부트 동작 시 메모리 위에 올라가게 되고 어플리케이션 동작을 멈추면 데이터도 함께 사라지게 된다. H2가 설치되지 않아도 사용할 수 있다.

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console

spring.h2.console 설정으로 H2 디비에 들어가 데이터의 CRUD를 체크할 수 있다. 그러나 초기에는 디비에 테이블조차 생성이 안되어 있기 때문에 다음 설정을 넣어 테이블을 자동 생성하게 한다.

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create-drop

2. TCP 서버 방식

스프링 부트 동작 중지시켜도 데이터가 사라지지 않는다.

spring.datasource.url=jdbc:h2:tcp://localhost/~/ager

전제 조건은 로컬에 H2 디비가 설치가 되어 있어야 한다. 로컬에 저장하는 방식이기 때문에 스프링부트의 동작과는 상관없이 데이터가 유지된다.

3. 파일 방식

jdbc:h2:file:D:\\H2\\ager

데이터가 남아 있는 방식으로 db 파일을 받아 사용하는 방식이다. 이미 존재하는 데이터가 필요한 경우 사용할 수 있을 것 같다.

댓글