yujiorama/spring-batch-different-database-schema-example
経緯
- Spring Batchでジョブを実行するには、ジョブ実行管理テーブル群を作らないといけない
- アプリケーションのデータベーススキーマはFlywayでマイグレーションするので、分けておきたい
- テーブル群を作るSQLスクリプトは、jarに内包されているスクリプトを使いたい
- Spring Batchを構成する
BatchConfigurer
には、データソースを設定するインターフェイスしかない
目標の設定
(HikariCP決め打ちになっちゃうけど)データベーススキーマを指定したデータソースとして自動構成させる。
問題になるかどうかの考察。
- アプリケーションがクエリを実行するとき、明示的にデータベーススキーマを指定する場合
- アプリケーションがクエリを実行するとき、明示的にデータベーススキーマを指定しない場合
- JdbcTemplate とか
- JDBC Connectionオブジェクトを取得できればどうにかなるので、そういうラッパークラスを用意すればよい
調査と検討
Spring Bootの自動構成プロパティをこうすればよかった。
spring.datasource: name: demo driver-class-name: org.postgresql.Driver url: jdbc:postgresql://localhost:5432/postgres username: app password: app schema: - classpath:db/schema/batchdemo.sql schema-username: app schema-password: app initialization-mode: always hikari: schema: batchdemo