Spring Boot お勉強 その3 ~H2DBの永続化~

前回、Spring BootからSpring Data JPAを経由してH2データベースを利用しました。
ただ、前回の内容だとDBがインメモリなので、アプリを停止すると消えてしまい、本来の意味での永続化ができていません。
そこで今回は、このDBをファイルとして保存するように設定してみます。


Spring Bootで自動的に適用される設定値をアプリ側から変更する方法の一つとして、プロパティファイルがあります。
クラスパス(src/main/resources)にapplication.propertiesファイルを作成します。
このファイル名がデフォルトのため、このファイル名で作成するだけで、その中に書いた設定値が適用されます。
ファイル内に以下のように記載します。

spring.datasource.url=jdbc:h2:~/workspace/project/db/db;MODE=PostgreSQL

要するにJDBCの接続文字列を指定しています。


ちなみに、例示した接続文字列の内容を説明すると次の通りです。
jdbc:→JDBC接続する
h2:→H2データベースを利用する
~/workspace/project/db/db→このファイルパスにデータベースファイルを作成する
(~はユーザのホームディレクトリ)
;MODE=PostgreSQL→H2の動作モード
(アプリを最終的にリリースするときに何のDBを使うつもりかによって指定しておくといいかも)


なお、ほかのDBエンジンを使用する場合の接続文字列は、以下が参考になります。
主要なDBのJDBC接続文字列一覧 - Fight the Future


この状態で前回の手順でテストを実行すると、指定したファイルパス(~/workspace/project/db/)にdb.h2.dbというファイルが作成されます。
ファイルの中身をH2のビューアなどを使ってみてみると、TEST_ENTITYテーブルが作成されているはずです。


なお、このままの設定ではアプリの起動の度にDBのデータがクリアされてしまいます。
データを残したい場合は、やはりapplication.propertiesに以下の設定値を追加しましょう。

spring.jpa.hibernate.ddl-auto=update



ちなみにapplication.propertiesには、ほかにも色々な設定値が指定可能です。
指定可能な項目の一覧はここをみてください。


ではまた。