#4 Spring BootでH2 DataBaseを利用する
Spring BootでH2 DataBaseを利用して簡単なプログラムを作成する前段階として、この記事では接続設定、テーブル、挿入するデータの作成を行いたいと思います。
前提条件
この記事はSpringの最低限の知識が必要になります。
また、なるべく分かりやすく書くつもりですが、この記事の目的は自分の勉強のアウトプットであるため、所々説明は省略します。
構築環境
Spring Boot DevTools: Webアプリケーションを自動で再起動してくれる
JDBC API, Spring Data JDBC: JDBCを使用してSQLを実行できる
H2 Database: H2 DataBaseを利用できるようになる
今回行うこと
今回は以下の流れに沿って進めていきます。
- H2 DataBaseとは
- application.propertiesにH2 DataBaseを利用するための設定を記述
- テーブル作成のSQLの用意
- 初期データを投入するSQLの用意
1. H2 DataBaseとは
H2 DataBaseはインメモリ型のデータベースであり、全てのデータをメモリ上に持ちます。そのため、Spring Boot起動中のみにしかデータベースを利用することができません。Spring Bootを再起動すると、テーブル、データは消えてしまうため、その仕組みを利用してテストや学習などに利用されている
2. application.propertiesにH2 DataBaseを利用するための設定を記述
#DataSource
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.sql.init.encoding=UTF-8
spring.datasource.initialize=true
spring.sql.init.schema-locations=classpath:schema.sql
spring.sql.init.data-locations=classpath:data.sql
#H2DB
spring.h2.console.enabled=true
DB_CLOSE_DELAY=-1: H2の接続が切れてもデータベースをドロップしなくなる
DB_CLOSE_ON_EXIT=FALSE: VM終了時の自動データベースクローズを無効にする
spring.datasource.initialize=true: テーブル作成とデータ投入のSQLを実行する
spring.sql.init.schema-locations: テーブル作成のSQLを実行する
spring.sql.init.data-locations: 初期データ投入のSQLを実行する
classpath: 「src/main/resources」のこと、schema, data.sqlは「resources」直下に設置
spring.h2.console.enabled=true: http://localhost:8080/h2-console にアクセスしてコンソールを利用できる
2. テーブル作成のSQLの用意
「src/main/resources」の直下に「shema.sql」を作成
CREATE TABLE IF NOT EXISTS employee(
id VARCHAR(50) PRIMARY KEY,
name VARCHAR(50),
age INT
);
3. 初期データを投入するSQLの用意
「src/main/resources」の直下に「data.sql」を作成
INSERT INTO employee(id, name, age) VALUES('1', 'Kato', 10)
プログラムを起動して http://localhost:8080/h2-console にアクセスすると、下記の画像が表示されます。
Connectを押すと以下のような画像が表示され、先ほど作成した「Employee」テーブルがあることが確認できます。
テーブルを選択し「SELECT」文を実行すると、今回記述したデータが格納されていることが確認できます。
最後に
以上で接続設定を終了します。最後にデータ接続の設定に関して参考にしたサイトがあるので載せておきます。