Nablarch開発におけるH2 Databaseの利用方法


はじめに

こんばんわ、きりです。
本記事はNablarchを使ってみようのサブ記事として作成しております。

Nablarchのブランクプロジェクトでは初期の設定で「H2 Database」が設定されている。
pom.xmlを確認すると、nablarch.db.jdbcDriverやnablarch.db.urlがh2になっていることが確認できる。
「H2 Database」を使おうとするたびに使い方を忘れてしまうので、備忘録として記事を投稿します。

H2 Databaseとは

Javaプラットフォーム上で動く、データベース。
OracleデーターベースやMySQLなどの重厚なデータベースではないが、JDBCにも対応しており、開発中に利用するデータベースとして利用できる。

目標

  • ブラウザからアクセスし、テーブル作成、レコード追加を実行する

作業の流れ

  1. H2 Databaseのコンソールサーバーを起動する
  2. ブラウザでログイン
  3. テーブルの追加
  4. レコードの挿入
  5. レコードの参照
  6. ログアウト

前提

Nablarchのウェブアプリケーションのブランクプロジェクトがローカルに作成されていること

H2 Databaseのコンソールサーバーを起動する

ブランクプロジェクトを作成すると、プロジェクトルート/h2/bin フォルダ に

  • h2.bat
  • h2.sh
  • h2w.bat

が用意されているので、自身の環境に合わせ、シェルスクリプト(またはバッチファイル)を実行する

ブラウザでログイン

ブラウザで
http://localhost:8082
にアクセスするとログイン画面が表示される
日本語表示も可能なようで、謎のこだわりを感じる

初期設定ではログイン情報は以下、

名前
JDBC URL jdbc:h2:h2/db/SAMPLE
ユーザー名 SAMPLE
パスワード SAMPLE

※JDBC URLはブランクプロジェクトをそのまま使う場合は、上記の通りのパスとなる
※ログインすると、プロジェクトルート/h2/dbにSAMPLE.h2.dbとSAMPLE.h2.lock.dbが作成されていることがわかる。SAMPLE.h2.dbがデータベースの実体なので、このファイルをバックアップしたり、削除したりすることで、復元やクリアが可能。クリアしても再接続時に再作成されるが、当然、ユーザー側で追加したテーブルは削除されている。

ログインが成功すると、以下のようなコンソール画面が表示される

テキストエリアにSQL文を入力し、「実行」ボタンをタップすると、処理が行えるようだ。
試しに、テーブルの一覧を表示してみる。

おぉ!!
なんか、やってやった感がある。。自分は何もやってないけど。

※「CODE_NAME」「CODE_PATTERN」「USER_SESSION」はデフォルトでINSERTされているテーブルです。

テーブルの追加

今回は安易ながらも、Webアプリケーションのトップページへのアクセスログを管理するテーブルを作成します。
項目はシンプルに以下、

  • ID
  • いつ(ACCESS_TIME)
  • 誰が(USER_ID)
  • どこに(REQUEST_ID)

リファレンスとテンプレートに既に用意されているcreate.sql(db/ddl/h2/create.sql)を参考にコマンドを作成。

CREATE TABLE PUBLIC.ACCESS_LOG (
  ID CHAR(8) PRIMARY KEY,
  ACCESS_TIME TIMESTAMP(23, 10) NOT NULL,
  USER_ID CHAR(8) NOT NULL,
    REQUEST_ID CHAR(8)
);

レコードの挿入

テーブル作成時と同様にコンソールからレコードを挿入してみる。
構文は一般的なinsert文を利用

INSERT INTO ACCESS_LOG (
 ID,
 ACCESS_TIME,
 USER_ID
) VALUES (
 '33333',
 '2019-05-02 12:48:35',
 'moge'
);

レコードの参照

念のため、INSERTしたレコードが追加されているかを確認

SELECT * FROM ACCESS_LOG;

ログアウト

終了時は、「切断」ボタンをタップ。

最後に

最初は、DBといえば「Oracle」や「MySQL」とかだろー!と思ってましたが、開発時に簡単に利用できるH2はホント便利だなと感じました。

参考URL

H2 Database
コマンドリファレンス