現在、Spring Batch の勉強をしている環境が MySQL や PostgreSQL を勝手にインストールできないため、勉強用のプログラムの試作では H2 というデータベースを使っている。
インストールをしなくても、プロジェクトの依存関係に H2 ライブラリを登録すれば開発したプログラムですぐ使えるようになるので便利。ただ、こんな DB があることをつい最近まで全然知らなかった(^^;;;。
AI様によると「Javaで記述された非常に軽量かつ高速なオープンソースRDBMS。サイズは約2.5MBとコンパクト。インストール不要で利用可能」というもので、データをメモリにロードしプログラムの実行が終わったらすぐに破棄するという使い方ができるので、単体テストで使うと便利・・・ということのようだ。
ちなみに俺はメモリ上への展開ではなく、ファイルに出力する形をとっている。
ただ、DBの読み書きがうまくいっているかはログとかで確認できるけど、プログラム実行後にテーブル内が確認したいという時はどうすんの?インストールしないから、PostgreSQL の psql みたいな操作ツールはないんよね?
心配ご無用。Web 画面で「H2 コンソール」というのが提供されている。
なるほどって思って、下記のような設定でコンソール利用可能にした。(H2 関係の設定のみ抜粋)
(resource/application.properties)
# H2 を PostgreSQL 互換モードで使用(テーブル名等は小文字で)spring.datasource.url=jdbc:h2:./.data/h2/db;MODE=PostgreSQL;DATABASE_TO_LOWER=TRUEspring.datasource.driver-class-name=org.h2.Driverspring.datasource.username=saspring.datasource.password=# H2 Console を有効化spring.h2.console.enabled=truespring.h2.console.path=/h2-console# JPA/Hibernate設定spring.jpa.database-platform=org.hibernate.dialect.H2Dialectspring.jpa.hibernate.ddl-auto=updatespring.jpa.show-sql=true
バッチが終了するとコンソールも閉じてしまうという話をチラっとみたので、バッチを途中でブレークして
にアクセスしてみたのだが「このサイトにアクセスできません localhost で接続が拒否されました。」になってしまう。8080 ポートで受信状態になってないときのエラーやん。
なんと、コンソール用の Webサービスは tomcat を使うようだ。H2 そのものが 8080 ポートへのアクセス機能を提供しているのかと思ってたが、よく考えたら、それだと Web アプリの開発のときに面倒だよな。8080 のポート番号も変えなきゃいけないし・・・
というわけで tomcat の依存関係の登録が必要。
pom.xml に以下の記述を追加し、
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
Alt + F5 キー押下でプロジェクトの更新を行おう。
(当ブログの「Spring Batch の依存関係をあとから追加する(Maven 版)」も参照)
また、テスト用のバッチはあっという間に終わってしまうので、途中でブレークしてその間にコンソールを開くなどしないといけない。
そこで、バッチ終了後にコンソールが使えるよう、以下の記述も application.properties に追加する。
# バッチ完了後もサーバーを起動したまま(Webコンソール有効状態維持)spring.batch.job.enabled=true# Webアプリケーションとして常駐spring.main.web-application-type=servlet
これで、バッチ終了後も Eclipse で見ると赤いストップボタンが有効になってて、まだ「実行状態」なのがわかる。
この状態でもう一度
にアクセス。
無事、ログイン画面が表示されるでしょ?
表示は左上のセレクターで「日本語」にできるよ。
JDBC URL にディフォルト値の「jdbc:h2:~/test」がセットされているので、application.properties
に記述しているとおり「jdbc:h2:./.data/h2/db」に変更する。
これで「接続」(Connect)ボタンを押下すればコンソール画面が開く。
SQL文を実行してみる。お、ちゃんとテーブルにデータが登録されてるじゃん。
Eclipse 側で赤い■押して処理を終了したら、もうアクセスはできません(笑)

コメントする