Spring Boot H2 DB Console 설정하기
Spring Boot에서 H2 DB Console을 설정하는 방법에 대해 정리한 내용입니다.
1. H2 DB
H2는 Java로 작성된 RDBMS(관계형 데이터베이스 관리 시스템) 입니다. 특징은 다음과 같습니다.
- 작은 용량(2MB)의 매우 가볍고 빠른 오픈 소스
- JDBC API 지원
- 인메모리(In-Memory) 기능을 통해 Server 모드와 Embedded 모드 지원
- 브라우저 기반의 Console 모드 지원
인메모리(In-Memory) 데이터베이스는 시스템 메모리에 데이터를 저장하는 DB입니다. 프로그램이나 DB 서버가 종료되면 데이터가 손실되며 주로 애플리케이션 개발 단계에서 테스트 DB로 많이 사용됩니다.
1.1. H2 DB Console 설정하기
Spring Boot에서 H2 DB Console을 설정하기 위해 application.yml 파일에 아래 내용을 추가해줍니다.
datasource:
url: jdbc:h2:mem:testdb
spring:
h2:
console:
enabled: true
path: /h2-console
Spring Boot에서 사용할 H2ConsoleProperties Class는 아래 링크를 통해 좀 더 자세하게 확인할 수 있습니다.
다음으로 build.gradle에 H2의 runtime 의존성을 추가해줍니다. H2는 일반적으로 테스트 용도로 사용하기 때문에 compile 의존성에 포함될 필요가 없습니다. 하지만 외부 접근이 필요한 경우엔 H2 라이브러리 scope를 compile로 변경하여 적용해줘야 합니다. Spring Boot에서는 H2를 실행할 때 기본적으로 JVM 메모리에 올리게 되는데, runtime으로 실행할 경우엔 라이브러리가 호출되지 않기 때문입니다.
dependencies {
...
runtimeOnly('com.h2database:h2')
}
빌드 후에 서버를 실행하고 브라우저에서 http://localhost:8080/h2-console url로 접속하면 다음과 같은 화면이 나타납니다.
Connect를 클릭하면 콘솔 화면으로 접속할 수 있는데 다음과 같은 에러가 발생하는 경우가 있습니다.
Database "{database_path}" not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-214] 90149/90149
해당 경로에 DB가 생성되지 않아 발생한 에러입니다. 다음 순서대로 실행하여 해결해줍니다.
터미널에서 brew로 H2를 설치해줍니다.
$ brew install h2
설치가 완료되면 H2를 실행해줍니다. H2를 실행하면 아래와 같이 key가 포함된 url이 출력되는데 브라우저에서 해당 url로 접속해줍니다. 접속이 안 될 경우엔 호스트를 127.0.0.1 또는 localhost로 변경해줍니다.
$ h2 -web
Web Console server running at http://123.45.678.90:8082?key=12345ab6789a3c7d710f52c390c518aa27d49b59a816c97cca1322af8e6b3dc7 (only local connections)
브라우저에서 접속해보면 H2 Console 화면이 나타나는데 Saved Settings와 JDBC URL을 다음과 같이 설정해주고 Connect를 클릭해줍니다.
해당 경로에 DB가 생성되어 콘솔에 정상적으로 접속이 된 것을 확인할 수 있습니다.
확인 후에는 독립적으로 실행한 H2 서비스를 종료하고 앞서 실행했던 Spring Boot의 8080 포트로 H2 Console을 다시 접속해줍니다. Saved Settings와 JDBC URL을 동일하게 설정해주고 연결해보면 에러없이 콘솔에 접속되는 것을 확인할 수 있습니다.
이상으로 Spring Boot에서 H2 DB Console을 설정하는 방법에 대해 알아봤습니다.
※ References
- 김영재 지음, 『처음 배우는 스프링 부트 2』, 한빛미디어 (2019), p69 ~ p71. CHAPTER 2 스프링 부트 환경 설정
- developerhive.tistory.com, 스프링부트 H2 데이터베이스, https://developerhive.tistory.com/34
- jojoldu.tistory.com, SpringBoot H2 DB 클라이언트로 IntelliJ 사용하기, https://jojoldu.tistory.com/234
- atoz-develop.tistory.com, H2 Database 설치, 서버 실행, 접속 방법 (Windows, MacOS), https://atoz-develop.tistory.com/entry/H2-Database-%EC%84%A4%EC%B9%98-%EC%84%9C%EB%B2%84-%EC%8B%A4%ED%96%89-%EC%A0%91%EC%86%8D-%EB%B0%A9%EB%B2%95
- demoversion.tistory.com, H2 Database not found, https://demoversion.tistory.com/69?category=915843
- dev-jj.tistory.com, (Mac)H2 데이터베이스 에러 (Database "/Users/*/* not found, either pre-create it or allow remote database creation (not recommended in secure environments) [90149-200] 90149/90149 (도움말)), https://dev-jj.tistory.com/entry/MacH2-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%97%90%EB%9F%AC-Database-Users-not-found-either-pre-create-it-or-allow-remote-database-creation-not-recommended-in-secure-environments-90149-200-9014990149-%EB%8F%84%EC%9B%80%EB%A7%90