본문 바로가기
Database

H2 Database 연동 및 콘솔 접속 방법 정리 (+runtimeOnly)

by devLog by Ronnie's 2023. 2. 22.

애플리케이션을 개발 할 때 초기 테스트 디비로 H2 데이터베이스를 많이 사용하므로 설정하는 방법을 정리하고 설정할 때 궁금했던 점을 같이 정리해논다.

 

H2 Database 연동 및 콘솔 접속 방법 정리 (+runtimeOnly)

 

H2 Database 연동 및 콘솔 접속 방법 정리 (+runtimeOnly)

 

H2 데이터베이스 테스트 시 사용 이유


설정방법을 정리 해놓기 앞서 왜 테스트 데이터베이스로 많이 사용하는지에 대해서 정리하려고 한다.

 

H2 데이터베이스는 다음과 같은 이유로 애플리케이션에서 개발 및 테스트 목적으로 메모리 내 데이터베이스로 사용된다.

 

 1. 경량 및 내장형 - 내장형 디비로 실행하는데 별도의 서버 프로세스가 필요하지 않다. 대신 스프링부트 애플리케이션 내에서 라이브러리로 실행되어 손쉽게 개발 및 테스트를 목적으로 사용할 수 있다.

 2. 빠르다 - H2 디비는 속도와 성능이 좋은 것으로 유명

 3. 쉬운 구성 - 아래에서 설정하는 방법을 보면 더욱 이해가 가겠지만 H2 디비는 구성하기 쉽고 많은 구성이나 설정 없이 빠르게 사용이 가능하다.

 4. SQL 지원 - H2는 SQL을 지원하여 SQL 이 익숙한 경우 쉽게 작업이 가능하다.

이러한 이유들로 실운영 환경에서는 권장되지 않으며 일반적으로 MySQL, Oracle과 같은 디비를 사용한다.

 

 

H2 데이터베이스 설정 방법


첫번째로 dependency를 추가한다.

runtimeOnly("com.h2database:h2")

 

두번째로 application.yml에 설정을 추가한다.

spring:

  h2:

    console:

      enabled: true  # h2 콘솔을 사용할지의 여부 (h2 콘솔이란 UI로 제공해주는 기능)

      path: /h2-console  # 콘솔에 접속하기 위한 경로

  datasource:

    driver-class-name: org.h2.Driver  # 디비 h2 사용

    url: jdbc:h2:~/test  # h2 접속 정보

    username: sa  # 접속 시 계정

    password:  # 비번

이제 설정은 끝났고, H2 콘솔에 접속해본다.

localhost:8080/h2-console 을 입력하여 접속해준다.

 

혹여 포트를 변경하였다면 변경한 포트에 맞게 변경해주고 h2-console 경로도 다르게 입력하였다면 변경하여 입력해준다.

접속을 하게 되면 아래와 같은 로그인 창이 나오며 JDBC URL을 아래와 같이 변경 후 설정한 username과 password를 입력하여 Connect 버튼을 눌러준다.

 

 

잘 접속되었다면 다음과 같은 화면을 볼 수 있다.

 

runtimeOnly란?


Gradle을 이용하여 dependency를 추가할 때 runtimeOnly란 뜻이 얼핏 런타임 환경에서 추가한다는 것은 알겠지만 정확히 어떤 의미인지 궁금하여 찾아보았다.

 

먼저 인텔리제이서에서 오른쪽에 Gradle에 Dependencies를 눌러보면 runtimeClasspathcompileClasspath를 확인할 수 있다. 당연히 h2는 runtimeClasspath 하위에 있다.

Gradle에서 runtimeOnly 범위는 빌드 프로세스의 런타임 단계에서만 종속성을 사용할 수 있다는 것을 의미한다.

추가적으로 해당 의미는 H2 디비만 사용한다는 의미는 아니니 다른 데이터베이스를 추가하더라도 사용에 있어 제한되거나하지는 않다.

댓글