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 파일을 받아 사용하는 방식이다. 이미 존재하는 데이터가 필요한 경우 사용할 수 있을 것 같다.
'스프링 부트' 카테고리의 다른 글
DTO vs VO vs Entity 비교 (0) | 2022.04.04 |
---|---|
[스프링부트] MongoDB로 CRUD 실습해보기 (0) | 2022.03.02 |
[스프링부트] javax.persistence와 org.springframework.data.annotation의 차이 (0) | 2022.03.02 |
스프링 시큐리티 인증 필터 처리 (0) | 2022.02.19 |
김영한 스프링의 핵심 원리 정리 (0) | 2022.01.19 |
댓글