스프링 부트

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

illlilillil 2022. 1. 19. 20: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 파일을 받아 사용하는 방식이다. 이미 존재하는 데이터가 필요한 경우 사용할 수 있을 것 같다.