8

私の現在のSpring3.0プロジェクトは、Flywayと統合しています。

信頼できるドキュメントがあるので、グーグルサイトに感謝します。しかし残念ながら、との統合についてはあまり話されていませんJPA

したがって、質問は次のとおりです。

  1. Flywayをと統合する方法はpersistence.xml?そしてそれはどのように機能しますか?JPAプロバイダーがスキーマを更新するたびauto generateに、その前後にスクリプトをどのように実行しますか?

  2. これまでのフライウェイによるクエリはHQLをサポートしていないと思います。そのため、移行イベントを統合する方法を知るためのサンプルコードはありますか?インターセプターまたは新しい側面を設計しますか?ドメインレベルで何をしますか?

ヒントをいただければ幸いです。前もって感謝します。

4

1 に答える 1

10

FlywayはJPAをサポートしていませんと春。基本的に、SQL(HQLではなく)スクリプトを順番に実行し、それらを追跡します。そしてそれはうまくいきます。データベースの使用方法やアップグレードスクリプトの作成方法には依存しません。

しかし、希望はあります。永続性プロバイダーは、既存のスキーマの更新(が可能であることを知っています)をサポートし、起動時にALTERステートメントとCREATEステートメントを実行する可能性があります。移行SQLスクリプトは完全ではなく、常に機能するとは限りませんが、良いスタートです。これらのスクリプトをログに記録し、SQLファイルに収集し、クリーンアップして、V_*.sqlFlywayに提供されるファイルとして使用します。

Frameworkは直接サポートされていませんが、既存の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 に答える