はじめに
自己学習でH2DBを実際に使用してみたので、SpringBootでH2データベースに接続した方法について簡単にまとめています。
動作環境等
macOS:13.0
Java:17
SpringBoot:3.2.4
IDE:IntelliJ(2023.3.4)
ビルドツール:Gradle
データベース:H2
手順
1. build.gradleに設定を記述する
2. application.propertiesにH2DBの設定を記述する
3. SpringBoot起動時に作成するテーブルを準備する
4. H2コンソールでテーブルを確認する
1.Build.gradleに設定を記述する
dependencies {
runtimeOnly 'com.h2database:h2' // #1
implementation 'org.springframework.boot:spring-boot-starter-data-jdbc' // #2
}
#1: H2DBを使用するために必要な設定
#2: SpringBootでデータベース操作に必要な設定(JDBC)
2.application.propertiesに設定を記述する
spring.datasource.data-source-class-name=org.h2.Driver // #1
spring.datasource.url=jdbc:h2:mem:testdb // #2
spring.datasource.username=sa // #3
spring.datasource.password= // #4
spring.h2.console.enabled=true // #5
#1: JDBC Driverのクラス名を指定。
#2: データベースのURLを指定。メモリ上にtestdbテーブルを作成する。
#3: H2DBにアクセスするユーザー名を指定
#4: H2DBにアクセスするパスワードを指定(空欄でも可)
#5: H2コンソールを有効に設定。
H2DBのデータの保存先について
今回はインメモリデータベースとして使用しています。インメモリデータベースはSpringBoot起動中に使用できるデータベースとなっており、停止と共にメモリが破棄されてしまいます。
データの保存先としてインメモリの他にファイルベースでの保存も可能なため、データを保存する必要性に応じてインメモリ、ファイルベースを使い分けます。
3.SpringBoot起動時に作成するテーブルを準備する
「src/main/resources」配下に下記ファイルを作成します。
SpringBoot起動時に下記ファイル内のSQLが実行され、schema.sqlにはDDL(CREATE/ALTER/DROPなど)、data.sqlにはDML(INSERT/UPDATE/SELECT/DELETE)を記述します。
・ schema.sql(DDL)
・ data.sql(DML)
CREATE TABLE TESTDB (
ID BIGINT NOT NULL PRIMARY KEY AUTO_INCREMENT,
NAME varchar(256) NOT NULL
);
INSERT INTO TESTDB (NAME) VALUES('TEST');
4.H2コンソールでテーブルを確認する
SpringBootを起動し、H2コンソール上で準備したテーブルの中身を確認します。起動後に任意のブラウザから下記のURLにアクセスして確認しましょう。
http://localhost:8080/h2-console
ブラウザに以下の画面が表示されたらコンソールのアクセスについては成功です。続けて「Connect」ボタンを押下しテーブルの確認をします。
Driver Class以降の項目についてはapplication.propertiesで指定した内容と合わせる必要があります。今回はデフォルト値で設定していますが必要に応じて編集がしてください。
以下の画面が表示されればH2DBへの接続は成功です。画面の左側にschema.sqlで定義したTESTDBがあるので問題なくテーブルも作成されていますね。
最後にコンソール上でSELECT文を使ってテーブルの中身も問題ないか確認してみましょう。テキストボックス内にSQL文を記述し「Run」を押下します(cmmand+Enterでも可)。
data.sqlで定義したデータが表示されていれば成功です。
おわりに
以上、H2DBの接続方法について簡単なまとめでした。