Интеграция Flyway и JPA

мой текущий проект Spring 3.0 интегрируется с Flyway.

благодаря сайту google, поэтому есть документ, на который я могу рассчитывать. Но, к сожалению, об интеграции с JPA.

поэтому вопросы:

  1. как интегрировать Flyway с persistence.xml? И как это работает? Каждый раз провайдер JPA будет auto generate обновление схемы Итак, как мы запускаем скрипт до или после этого?

  2. I угадайте, что запрос flyway до сих пор не поддерживает HQL, и так есть ли какой-либо пример кода, тогда я могу пройти, чтобы узнать, как интегрировать событие миграции? Разработать перехватчик или новый аспект?Что делать на уровне домена?

любой намек будет оценен по достоинству. Спасибо заранее.

1 ответов


Flyway не поддерживает JPA и весной. Он в основном запускает ваши SQL (не HQL) скрипты в порядке и отслеживает их. И делает это хорошо. Он остается агностиком того, как вы используете свою базу данных и как вы создаете свои сценарии обновления.

тем не менее, есть надежда. Ваш поставщик сохраняемости, скорее всего, будет поддерживать обновление существующей схемы (я знаю спящий режим и eclipselink can), запуск ALTER и создание операторов при запуске. Этот сценарии миграции SQL не идеальны и не всегда будут работать, но это хорошее начало. Войдите в эти скрипты, соберите в файл SQL, очистите и используйте как V_*.sql файл поставляется в Flyway.

обновление: хотя нет прямой поддержки весна рамки, вы можете легко интегрируйте его с существующим приложением весны. Этот подход доказал свою эффективность на производстве и прекрасно играет:

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

бонус: он отлично работает с конфигурацией Java (Скала), а также:

@Bean(initMethod = "migrate")
def flyway() = {
    val fly = new Flyway()
    fly.setDataSource(dataSource)
    fly
}