我有基於Tapestry
框架的項目。它使用Hibernate
作爲ORM庫。Liquibase集成了Tapestry和Hibernate:初始模式創建步驟
我的類使用annotations
映射到數據庫。
我想將Liquibase
整合到我的項目中,以便能夠維護數據庫狀態,進行版本更新。
我做了什麼,直到這一刻以下步驟:
1)我創建服務對的:LiquibaseService
- >LiquibaseServiceImpl
。
LiquibaseSerivce
具有方法public void update()
,其從hibernate.cfg.xml
配置創建獨立DataSource
和最後做liquibase.update("production");
2)我在AppModule
加入結合到該服務:
binder.bind(LiquibaseService.class, LiquibaseServiceImpl.class).eagerLoad();
3)I」已添加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
將完成其工作?
你的意思,那'Tapestry'將自動注入'Logger'和'LiquibaseService',會嗎? – Andremoniy
TapestryIOC將所有參數注入AppModule#contribution方法,並且您可以始終訪問內部匿名類的最終變量。 – Tawus
是的,它確實有效,我檢查了它。謝謝,這是一個有趣的決定。我會+1你的答案,但我仍然很有趣如何使用註釋做到這一點。或者這是不可能的? – Andremoniy