2016-06-22 45 views
1

我正在使用Hibernate JPA开发我的JAX-RS应用程序,其设置如hibernate.hbm2ddl.auto='create-drop'在我的postgresql数据库中创建表。在哪里执行Flyway.migrate()?

显然,这是灾难性的生产。

最近我发现了Flyway,想试一试。它有几种迁移变更的方法,如命令行或API。

如果我没有弄错,命令行方法要求我分别执行更改,而API方法将自动执行迁移。但是,JAXRS应用程序中的main函数在哪里?

希望我的问题很清楚。

回答

2

Flyway Docs说,你可以使用API​​的方式,以开始迁移,如:

Flyway flyway = new Flyway(); 
flyway.setDataSource(...); 
flyway.migrate(); 

唯一需要的东西就是运行在Web应用程序初始化过程中该代码段。使用标准的Servlet方法,如:

@WebListener 
public class AppStartupListener implements ServletContextListener { 

    @Override 
    public void contextInitialized(ServletContextEvent event) { 
     Flyway flyway = new Flyway(); 
     // configure datasource 
     flyway.setDataSource(...); 
     flyway.migrate(); 
    } 

    @Override 
    public void contextDestroyed(ServletContextEvent event) {} 

} 

希望这会有所帮助。