複数のSQLインポートファイルを使用したSpringBoot
1. 概要
Spring Bootを使用すると、主に統合テスト用のデータを準備するために、サンプルデータをデータベースにインポートできます。 箱から出して、2つの可能性があります。 import.sql(Hibernateサポート)またはdata.sql(Spring JDBCサポート)ファイルを使用してデータをロードできます。
ただし、読みやすさを向上させたり、モジュール間でinitデータと一部のファイルを共有したりするために、1つの大きなSQLファイルをいくつかの小さなファイルに分割したい場合があります。
このチュートリアルでは、HibernateとSpringJDBCの両方でそれを行う方法を示します。
2. Hibernateサポート
プロパティspring.jpa.properties.hibernate.hbm2ddl.import_filesを使用してロードするサンプルデータを含むファイルを定義できます。 テストリソースフォルダ内のapplication.propertiesファイルで設定できます。
これは、JUnitテストのためだけにサンプルデータをロードしたい場合です。 値は、インポートするファイルのコンマ区切りのリストである必要があります。
spring.jpa.properties.hibernate.hbm2ddl.import_files=import_active_users.sql,import_inactive_users.sql
この構成では、import_active_users.sqlとimport_inactive_users.sqlの2つのファイルからサンプルデータが読み込まれます。 ここで重要なのは、プレフィックスspring.jpa.propertiesを使用して値(JPA構成)をEntityManagerFactoryに渡す必要があるということです。
次に、SpringJDBCサポートを使用してそれを行う方法を示します。
3. SpringJDBCサポート
初期データの構成と
spring.sql.init.data-locations=import_active_users.sql,import_inactive_users.sql
上記のように値を設定すると、Hibernateサポートの場合と同じ結果が得られます。 ただし、このソリューションの重要なの利点は、Antスタイルのパターンを使用して値を定義できることです。
spring.sql.init.data-locations=import_*_users.sql
上記の値は、 import _ * _ users.sql パターンに一致する名前のすべてのファイルを検索し、内部にあるデータをインポートするようにSpringに指示します。
このプロパティはSpringBoot2.5.0で導入されました;以前のバージョンのSpringBootでは、spring.datasource.dataプロパティを使用する必要があります。
4. 結論
この短い記事では、カスタムSQLファイルから初期データをロードするようにSpringBootアプリケーションを構成する方法を示しました。
最後に、HibernateとSpringJDBCの2つの可能性を示しました。 どちらも非常にうまく機能し、どちらを選択するかは開発者次第です。
いつものように、この記事で使用されている完全なコード例は、Githubでから入手できます。