본문 바로가기

프로그래밍/Spring

[스프링부트] H2 DB 설치 및 사용

이 글은 오늘 배운 내용을 정리하는 블로그 글 입니다. 


 

오늘은 H2 DB를 파일모드로 사용하는 방법에 대해서 알아보겠습니다. 

 

H2 DB는 파일모드로 사용할 수도 있고, 메모리 모드로 사용할 수 도 있습니다.

메모리 모드로 할 경우에는 테스트에서 사용하기가 좋습니다. 스프링부트에서 별도 설치없이 의존성만 추가하면 바로 사용할 수 있고, 메모리에서 실행되기 때문에 프로그램이 시작될 때 데이터가 모두 초기화 됩니다. 

 

파일모드로 하려면 H2 DB를 다운받고 실행해주는 과정이 필요합니다. 

 

H2 DB 다운로드 받기

 

먼저 H2 DB 홈페이지 (https://www.h2database.com/html/main.html) 에 방문해서 파일을 다운로드 받아야 합니다. 

 

'Download' 메뉴로 들어가서 '1.4.199 - Last Stable' 버전을 다운로드 합니다. 

(다운로드 받는 시점에서 'Last Stable' 버전이 다르다면, 해당 버전을 다운로드 받으시면 됩니다)

 

 

파일을 다운 받았으면 DB를 설치할 곳에 압축을 풀어줍니다. 

 

 

여기까지 했으면 설치에 대한 준비는 끝났습니다.

 

 

H2 DB 실행하기

 

이제 다운받은 DB실행해 보겠습니다.

 

압축을 푼 경로에서, 'bin' 폴더로 이동합니다. 

파일 중에 'h2.sh' 파일이 있습니다. 이 파일을 실행해줍니다. 

 

 

파일을 실행하면 브라우저에서 'H2 콘솔' 이 실행됩니다. 

 

여기서부터가 중요합니다. DB 파일을 생성하는 작업을 먼저 해줘야 합니다. (DB 파일은 DB의 내용을 저장하는 파일입니다)

 

콘솔 화면에 있는 내용을 아래와 같이 변경해주세요. 

  1. 접속 URL: 주소 제일 앞에 IP 정보를 'localhost'로 변경
  2. JDBC URL: 'jdbc:h2:DB파일경로' 로 변경

만약에 'Home' 경로에 'h2test' 라는 이름으로 DB 파일을 생성하려 한다면, 아래와 같습니다. 

 

변경을 다 했으면 화면 아래에 '연결' 버튼을 클릭해서 DB에 접속합니다. 

아래와 같은 화면이 출력되면 정상적으로 실행이 된 것입니다. 

 

 

 

이제 DB 파일이 정상적으로 생성되었는지 확인을 해야 합니다. 

'JDBC URL'에 입력했던 DB 파일 생성 경로로 가셔서 파일이 제대로 생성되었는지 확인합니다. 

 

h2test.mv.db 파일 생성 확인

 

H2 DB 접속 설정 변경하기

 

이제 'JDBC URL' 접속 정보를 다시 변경해줘야 합니다. 

 

처음 설정했던 URL은 로컬에 파일을 생성하기 위한 목적이었고, 이제 파일이 생성된 것을 확인했으니 여기로 접속 하도록 경로를 변경해줘야 합니다.  앞으로는 지금 설정하는 주소로 계속 접속하면 됩니다. 

 

콘솔에 접속 중이라면, 화면 왼쪽 상단에 '연결 끊기' 버튼을 클릭해서 로그인 화면으로 이동합니다. 

 

'JDBC URL' 을 아래와 같이 변경합니다.

   - JDBC URL: 'jdbc:h2:tcp//localhost/DB파일경로'

이 글의 예시를 기준으로는 아래와 같습니다.

여기까지 설정했으면 모든 준비가 완료되었습니다. 

 

앞으로는 H2 DB를 준비하실 때, 아래 2가지 과정만 하시면 됩니다. 

  1. 콘솔 창에서 'h2.sh' 파일 실행
  2. 브라우저에서 'H2 콘솔'이 나타나면, '연결' 버튼을 클릭해서 접속

 

스프링 부트에서 H2 DB 설정

 

마지막으로 스프링부트에서 H2 DB를 사용하기 위해서 설정을 해줘야 합니다. 

설정은 2가지인데, 의존성 추가와 접속 정보를 위한 설정추가 입니다. 

 

먼저 의존성 추가부터 보겠습니다. 

'build.gradle' 파일의 'dependencies' 안에 아래의 정보를 추가합니다. 

 

dependencies {

	// 다른 의존성들 생략..
    
	runtimeOnly 'com.h2database:h2'
}

 

 

의존성을 추가하면 IDE에서 변경된 의존성을 반영할 것인지 물어봅니다. 이때 변경사항을 반영하면 됩니다. 

정상적으로 의존성이 반영되면 gradle의 의존성 정보에서 H2 DB를 확인할 수 있습니다. 

(혹시 의존성 정보가 추가되지 않았다면, 하면 왼쪽 위에 'Reimport All Gradle Projects' 버튼을 클릭합니다)

 

 

의존성 추가가 완료되었으면 접속 정보를 설정해줘야 합니다. 

'application.properties' 또는 'application.yaml' 파일을 열어줍니다. 

 

'spring.datasouce' 에 아래의 각 정보를 입력합니다. 

   - url: 접속 URL. (H2 콘솔의 JDBC URL 정보)

   - username: sa.  (H2 콘솔의 사용자명)

   - password: (H2 콘솔의 비밀번호. 별도로 설정안했으면 공백)

   - driver-class-name: org.h2.Driver

 

// application.yaml 의 경우

spring:
  datasource:
    url: jdbc:h2:tcp://localhost/~/h2test
    username: sa
    password:
    driver-class-name: org.h2.Driver

 

// application.properties 의 경우

spring.datasource.url=jdbc:h2:tcp://localhost/~/h2test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driver-class-name=org.h2.Driver

 

여기까지 하면 모든 설정이 완료되었습니다. 

 

혹시 datasource 셋업 관련해서 추가적으로 궁금하시면 아래 경로에서 '31.1.2 Connection to a Production Database' 부분을 보시면 됩니다. 

- 스프링 부트 문서: https://docs.spring.io/spring-boot/docs/2.1.7.RELEASE/reference/html/boot-features-sql.html#boot-features-sql-h2-console