【问题标题】:Where to execute Flyway.migrate()?在哪里执行 Flyway.migrate()?
【发布时间】:2016-10-23 23:26:32
【问题描述】:
我正在使用 Hibernate JPA 开发我的 JAX-RS 应用程序,使用 hibernate.hbm2ddl.auto='create-drop' 之类的设置在我的 postgresql 数据库中创建表。
显然,这在生产中是灾难性的。
最近,我发现了 Flyway,并想尝试一下。它有几种方法来迁移更改,例如命令行或 API。
如果我没记错的话,命令行方法需要我单独执行更改,而 API 方法会自动执行迁移。但是,JAXRS 应用程序中的main 函数在哪里?
希望我的问题足够清楚。
【问题讨论】:
标签:
hibernate
jax-rs
flyway
【解决方案1】:
正如Flyway Docs 中所说,您可以使用 API 方法来开始迁移,例如:
Flyway flyway = new Flyway();
flyway.setDataSource(...);
flyway.migrate();
唯一需要做的是在 Web 应用程序初始化过程中运行这段代码 sn-p。为此使用标准 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) {}
}
希望这会有所帮助。