OSGiアプリケーションがあります。各OSGiモジュールは、いくつかのビジネスロジックとデータモデルで構成されています。新しいモジュールを初めて起動するたびに、スキーマの進化を行うことを計画しています。前述したように、各モジュールには、アプリケーションのコアデータモデルを拡張するデータモデルが含まれています。したがって、新しいモジュールを開始する前に、いくつかの新しいテーブルを作成する必要があります。
私が考えることができる唯一の解決策は、エクステンダーパターンです。言い換えるとdb-schema-extender
、の実装を待機するというモジュールがありますDbSchemaEvolutionService
。このサービスの実装は、アプリケーションのコアデータモデルを拡張することをいとわない各モジュールによって提供されます。このような実装がOSGiサービスレジストリで要求されると、はメソッドをdb-schema-extender
呼び出し DbSchemaEvolutionService.getEntities()
てエンティティのリストを取得し、次にdb-schema-extender
を実行しschemaExport(List<Object> entities)
て新しいモジュールに必要なテーブルを作成します。
同様の問題の経験はありますか?
あなたの解決策は何でしたか?
私が提案した解決策についてどう思いますか?