H2 Databaseを用いてテスト用データを作成


やりたいこと

JunitテストにDB接続のテストデータを作成するために、H2データベースを利用して、Windows10 環境でテストデータを作成してみたので、メモを書きます。

環境は以下となります。
* Java 1.8
* H2 1.3.175

H2データベースの起動

H2データベースのZipファイルを展開して、binフォルダ配下のh2.batをダブルクリックします。

正常に起動できたら、以下のような画面が表示されます。

今回は、ロカール上の作業のため、「保存済み設定」でH2 Databaseのモード を「Generic H2(Embedded)」を選択します。

JDBC URLのところ、jdbc:h2:./../testを指定します。
デフォルドのユーザー名は、sa、パスワード不要です。

接続ボタンを押下すると、テストデータ作成用画面に遷移できます。

テストデータの作成

以下のSQLを実行します。

CREATE TABLE OPE(USER_ID CHAR(22), COMPANY_NM VARCHAR(100), DEPARTMENT_NM VARCHAR(100));
CREATE TABLE PROJECT(PROJECT_ID CHAR(22), PROJECT_NAME VARCHAR(100), PROJECT_TYPE VARCHAR(100));
INSERT INTO OPE (USER_ID, COMPANY_NM, DEPARTMENT_NM) VALUES('111111111', 'サンプル', 'sample');
INSERT INTO OPE (USER_ID, COMPANY_NM, DEPARTMENT_NM) VALUES('0000000001', 'サンプル2', 'sample2');
INSERT INTO PROJECT (PROJECT_ID, PROJECT_NAME, PROJECT_TYPE) VALUES('0000000001', 'メリオダス', 'test');
INSERT INTO PROJECT (PROJECT_ID, PROJECT_NAME, PROJECT_TYPE) VALUES('0000001017', 'メリオダス2', 'test2');

データベースの左側にOPEPROJECTのテーブルを生成されます。

また、test.h2.dbのファイルが生成されたため、このデータベースを利用して、Junitテストを実行できます。

今回、H2バージョンは 1.3.x なので、生成されたデータベースファイルは <databaseName>.h2.db です。
H2バージョン 1.4.x 以上を利用する場合、生成されるデータベースファイルは <databaseName>.mv.db です。

注意点、現時点最新のH2バージョン 1.4.200のデータベースを利用する際、以下のエラーが出でました。
H2データベースのissue #2078にも同じ事象が出ているそうです。その場合、1.4.199のバージョンを利用してください。

java.lang.IllegalStateException: Unable to read the page at position 281474976722688 [1.4.199/6]
...

※データベースにログインする際、パスワードを追加したい場合、以下のコマンドを実行します。

ALTER USER sa SET PASSWORD 'password'