4

Spring を長年使用した後、現在 EJB3.1 に移行中です。EJB に実装したいのですが、一致するパターンがまだ見つかりませんでした。MigrationManager です。春には、データベース スキーマとデータ移行を処理する Bean がありました。このために、Spring BeanFactoryPostProcessor を実装しました。これは、この方法でデータベース接続を注入したためですが、JPA システムはまだ初期化されていません。したがって、すべての移行手順を実行してから、アプリケーションの起動を終了させることができました。

EJB3.1でこのようなことを行うにはどうすればよいですか(CDIを使用して...これが重要な場合)

クリス

4

1 に答える 1

0

これは、EJB からいくつかの初期化コードを実行する方法です。

@Singleton
@Startup
public class MigrationManager {
    @PostConstruct
    public void migrate() {
       // do work
    }
}

そのための別のアプリは必要ありません (上記のコメントで提案されているように)。

EntityManager は遅延してインスタンス化されるため、他の起動コードに を挿入しない限り、が実際にデータベースにEntityManagerアクセスする前にデータベース スキーマを更新する機会が得られます。EntityManager

ところで、データベース スキーマの移行には、 によってトリガーできるLiquibaseServletContextListenerをお勧めします。

于 2013-03-12T19:18:45.263 に答える