Spring 에서 h2 db에 연결하기

Ada·2022년 10월 5일
0

항해TOL

목록 보기
22/63
post-custom-banner

dependency 설정

  • gradle

runtimeOnly 'com.h2database:h2'

  • maven
<dependency>
	<groupId>com.h2database</groupId>
	<artifactId>h2</artifactId>
</dependency>

application.properties 설정

  1. 인메모리 방식
spring.datasource.url=jdbc:h2:../test
  • 위 방식은 스프링부트 어플리케이션이 실행됐을때 메모리 내에서 동작하고 어플리케이션 종료시 데이터가 사라진다. 따라서 간단한 CRUD 기능을 테스트하기에 적합하다.
spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
  • 따라서 기존 사용하던 콘솔에서 DB를 열어도 데이터가 안보이는데 위와같이 spring.h2.console 설정을 하면 인메모리로 돌아가는 H2 DB에 접속해서 스프링부트 어플리케이션이 돌아가는 동안의 DB를 확인할 수 있다.

  • 단, 인메모리 방식을 사용할 경우 entity와 필요한 sequence가 DB에 생성되어 있지 않은 상태로 DB를 사용하면 에러가 발생한다.

  • 그래서 인메모리 방식을 사용할 때는 application.properties에 아래 설정을 넣어 사용할 entity와 sequence를 자동 생성하도록 해야한다.

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=create-drop
  1. TCP 서버 방식
    인메모리와 다르게 스프링부트 어플리케이션이 종료되어도 데이터가 사라지지 않는 방식이다.
spring.datasource.url=jdbc:h2:tcp://localhost/~/test
  • TCP 서버 방식으로 설정해서 사용할 경우 인메모리 방식에서 했던 'spring.h2.console' 설정과 'spring.jpa.hibernate.ddl-auto=create-drop' 설정을 하지 않아도 된다.

  • 그냥 로컬에 설치되어 있는 H2 DB의 콘솔을 사용하면 스프링부트 어플리케이션의 CRUD 기능으로 인해 변경된 데이터를 확인할 수 있다.

  • 참고로 H2 DB를 설치하면 설정되어 있는 기본 로컬 주소는 아래와 같다.

  • http://192.168.0.103:${설정된 포트}

(출처 : https://pamyferret.tistory.com/17)

profile
백엔드 프로그래머
post-custom-banner

0개의 댓글