8

我当前的 Spring 3.0 项目正在与 Flyway 集成。

感谢谷歌网站,所以有我可以指望的文件。但不幸的是,没有太多谈论与JPA.

所以问题是:

  1. 如何与 Flyway 集成persistence.xml?它是如何工作的?每次 JPA 提供程序都会auto generate更新架构,那么我们如何在此之前或之后运行脚本?

  2. 我猜到目前为止,flyway 的查询不支持 HQL,所以是否有任何示例代码,然后我可以通过了解如何集成迁移事件?设计拦截器或新方面?在域级别上做什么?

任何提示表示赞赏。提前致谢。

4

1 回答 1

10

Flyway 不支持 JPA和春天. 它基本上按顺序运行您的 SQL(不是 HQL)脚本并跟踪它们。并且做得很好。它与您如何使用数据库以及如何生成升级脚本无关。

不过,还是有希望的。您的持久性提供程序很可能支持更新现有模式(我知道可以),在启动时运行 ALTER 和 CREATE 语句。迁移 SQL 脚本并不完美,它并不总是有效,但这是一个好的开始。记录这些脚本,收集到 SQL 文件中,清理并用作V_*.sql提供给 Flyway 的文件。

更新:虽然没有对框架的直接支持,但您可以轻松地将其与现有的 Spring 应用程序集成。这种方法被证明适用于生产并且运行良好:

<bean id="flyway" class="com.googlecode.flyway.core.Flyway" init-method="migrate">
  <property name="dataSource" ref="..."/>
  ...
</bean>

奖励:它也适用于 Java 配置(使用 Scala):

@Bean(initMethod = "migrate")
def flyway() = {
    val fly = new Flyway()
    fly.setDataSource(dataSource)
    fly
}
于 2012-08-21T15:51:18.087 回答