Spring BootでH2 データベースを設定、利用する|H2 DataBase



Spring Bootで、H2 データベース(組み込みモード)を設定して、利用する方法について、紹介します。


インメモリデータベースについて

Spring Bootで、H2 データベースをインメモリデータベースとして利用する場合は、以下のようにアプリケーションプロパティを設定します。

インメモリデータベースは、Spring Boot実行中に利用できるメモリ上のデータベースであり、Spring Bootを停止すると、データは消えます。


アプリケーションプロパティ - application.properties

/src/main/resources/application.properties
spring.datasource.data-source-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:demodb
spring.datasource.username=sa
spring.datasource.password=dm

spring.datasource.urlプロパティに「jdbc:h2:mem:データベース名」を設定する場合は、インメモリデータベースとなります。

また、application.propertiesで、上記のプロパティの設定をしない(設定がない)場合は、デフォルトで以下の設定と同じ内容が自動設定されます。プロパティを設定しなくても、H2 データベースを利用することができます。

spring.datasource.data-source-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
* パスワード設定なし

ローカルデータベース(DBファイル)について

Spring Bootで、H2 データベースをローカルデータベース(DBファイル)として利用する場合は、以下のようにアプリケーションプロパティを設定します。

インメモリデータベースの場合、Spring Bootを停止すると、データは消えますが、ローカルデータベースの場合、データは消えず、DBファイルにデータが保存されます。

アプリケーションプロパティ - application.properties

/src/main/resources/application.properties
spring.datasource.data-source-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:C:/eclipse_jee_201812/workspace/demo/db/demodb
spring.datasource.username=sa
spring.datasource.password=dm

spring.datasource.urlプロパティに「jdbc:h2:接続するデータベース名(絶対パス)」を設定する場合は、ローカルデータベース(DBファイル)となります。

上記の設定の場合、「C:/eclipse_jee_201812/workspace/demo/db」配下にDBファイル「demodb.mv.db」を配置します。

Spring BootでH2データベースを設定して、利用する

ここでは、
Spring Bootのプロジェクトを作成します。H2 データベースを設定して、Spring Boot アプリケーションからデータベースにアクセスします。

作成したプロジェクトは、「DemoApplication.java」と「application.properties」のみを編集します。


また、H2 コンソールを利用して、データベースアクセス結果を確認します。

参考:H2 コンソール利用 - Spring BootでH2 コンソールの設定|H2 Console


動作環境

・Windows10 64bit

・Eclipse 2018-12(Eclipse 4.10)

・Java 8

・Spring Boot 2.1.4(Spring Tool Suite 4)

※下記の記事で構築した開発環境を利用

Spring Tool Suite 4の開発環境構築(Eclipseにインストール)|STS4


プロジェクトを作成

まずは、「ファイル」>「新規」>「Spring スターター・プロジェクト」を選択します。



次に、「新規Spring スターター・プロジェクト」画面で、プロジェクトの名前「demo」を入力して、「次へ」ボタンをクリックします。「新規Spring スターター・プロジェクト依存関係」画面で、「H2」「JDBC」「WEB」にチェックして、「次へ」ボタンをクリックして、表示された画面で「完了」ボタンをクリックします。






これで、プロジェクトの作成は完了です。

* H2 コンソールを利用するために、「新規Spring スターター・プロジェクト依存関係」画面で、「WEB」にチェックしています。


アプリケーション(Application)

アプリケーションクラスは、以下の内容で編集します。

・アプリケーションクラス

DemoApplication.java

・ソースコード
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.jdbc.core.JdbcTemplate;

@SpringBootApplication
public class DemoApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Autowired
    JdbcTemplate jdbcTemplate;
    
    @Override
    public void run(String... strings) throws Exception {
    
        jdbcTemplate.execute("CREATE TABLE customers(" +
                "id SERIAL, first_name VARCHAR(255), last_name VARCHAR(255))");
    
        jdbcTemplate.update("INSERT INTO customers(first_name, last_name) VALUES ('John','Woo')");
    }
}


Spring Boot アプリケーションを実行すると、DemoApplication.mainメソッドが実行され、DemoApplication.runメソッドが実行されます。

DemoApplication.runメソッドでは、customersテーブルを作成して、データを登録しています。


インメモリデータベースを利用する

まず、アプリケーションプロパティを以下のように設定します。

application.properties
spring.h2.console.enabled=true

* spring.h2.console.enabledプロパティに「true」を設定して、H2 コンソールが利用できるようにします。

次に、「demo」を右クリックして、「実行」>「Spring Boot App」を選択して、Spring Boot アプリケーションを実行します。



ブラウザで「http://localhost:8080/h2-console」にアクセスして、H2 コンソールのログイン画面を表示して、以下の情報(デフォルト設定)を入力して、「Connect」ボタンをクリックします。

Driver Class:org.h2.Driver
JDBC URL:jdbc:h2:mem:testdb
User Name:sa
Password:



表示された画面でSQL文を入力して、「Run」をクリックすると、インメモリデータベースにcustomersテーブルが作成され、データが登録されていることが確認できます。




ローカルデータベースを利用する

まず、アプリケーションプロパティを以下のように設定します。

application.properties
spring.datasource.data-source-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:C:/eclipse_jee_201812/workspace/demo/db/demodb
spring.datasource.username=sa
spring.datasource.password=dm

spring.h2.console.enabled=true

* spring.h2.console.enabledプロパティに「true」を設定して、H2 コンソールが利用できるようにします。

次に、「demo」を右クリックして、「実行」>「Spring Boot App」を選択して、Spring Boot アプリケーションを実行します。


ブラウザで「http://localhost:8080/h2-console」にアクセスして、H2 コンソールのログイン画面を表示して、アプリケーションプロパティで設定した情報を入力して、「Connect」ボタンをクリックします。



表示された画面でSQL文を入力して、「Run」をクリックすると、ローカルデータベースにcustomersテーブルが作成され、データが登録されていることが確認できます。




DBファイル「demodb.mv.db」は、
Spring Boot アプリケーションを実行して、customersテーブル作成時に、C:/eclipse_jee_201812/workspace/demo/db」配下に作成されます。


スポンサーリンク

0 件のコメント :

コメントを投稿