Web系開発メモ

Java, C#, HTML, CSS, JavaScript のことなどを書いてます。

SpringBoot H2DBに接続して管理コンソールを使う方法

Spring Boot のアプリから H2 データベースに接続して、ブラウザで H2 コンソールを使用する方法を書いていきます。

バージョン

  • Spring Boot 2.7.5

1. Spring Boot の H2 自動設定について

Spring Boot は、アプリが以下の条件を満たすと、H2 Console を使えるように自動で設定してくれます。

  • Servlet ベースの Web アプリであること
  • com.h2database:h2 がクラスパスにあること
  • Spring Boot の Developer Tools を使用していること

あと、動作確認で DB 接続が必要なことに気付き、Spring Data JPAリポジトリとエンティティを用意しました。

2. ビルドシステムの準備

上の条件を満たすために、Mavenpom.xml で以下の依存性(ライブラリ)を追加しました。

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <scope>runtime</scope>
      <optional>true</optional>
    </dependency>
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <scope>runtime</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    ...
  </dependencies>
  ...
</project>

Spring Boot の Web・JPA・DevTools、あとは H2 Database を追加しています。

Gradle で Developer Tools を定義する方法は以下の通りです。

dependencies {
  developmentOnly 'org.springframework.boot:spring-boot-devtools'
}

3. Spring Boot アプリの起動

リポジトリクラスを用意して、IDE でアプリを起動すると、以下のメッセージが出力されました。

H2 console available at '/h2-console'.
Database available at 'jdbc:h2:mem:b67d8288...'

コンソールを利用するために、jdbc:h2:mem:b67d8288... の文字列を控えておきます。

※ 文字列はランダムで、上は値の一部を記載しています。

4. コンソールアプリケーションに接続

ブラウザで以下の URL を開きます。

http://localhost:8080/h2-console

コンソールのログイン画面が表示されるので、JDBC URL に先程の文字列を入力して「Connect」をクリックします。

他の入力欄はデフォルトのままで大丈夫です。

  • Driver Class: org.h2.Driver
  • User Name: sa
  • Password: (空のまま)

ログイン後は、SQL を実行できたりします。