フレームワークに基づいたプロジェクトがありTapestry
ます。Hibernate
ORMライブラリとして使用します。
私のクラスは、を使用してデータベースにマップされますannotations
。
プロジェクトに統合Liquibase
して、データベースの状態を維持し、バージョンを更新できるようにしたいと思います。
この瞬間まで私がしたことは、次のステップです。
1)サービスペアを作成しました:LiquibaseService
-> LiquibaseServiceImpl
。
LiquibaseSerivce
構成からpublic void update()
独立して作成し、最終的に実行するメソッドがありますDataSource
hibernate.cfg.xml
liquibase.update("production");
2)このサービスにバインディングを追加しましたAppModule
:
binder.bind(LiquibaseService.class, LiquibaseServiceImpl.class).eagerLoad();
3)更新を開始するinitMyApplication
メソッドを追加しました:AppModule
Liquibase
@Startup
public static void initMyApplication(Logger logger, LiquibaseService liquibaseService) {
logger.info("Updating database by liquibase service...");
liquibaseService.update();
logger.info("update-db done.");
}
これはすべて、初期スキームがすでに作成されている本番環境で正常に機能します。テーブルや列などを快適にドロップできます。
しかし、問題は、Liquibase
アプリケーションを新しいサーバーにデプロイするときに、ゼロから(を使用して)新しいスキームを作成できないことです。Hibernate
独立して起動し、スキームにクラスにマップされたテーブルがないという不満があります。
仕事が終わるそのHibernate
瞬間まで、どうすれば開始を遅くすることができますか?Liquibase