Интеграция Flyway и JPA
мой текущий проект Spring 3.0 интегрируется с Flyway.
благодаря сайту google, поэтому есть документ, на который я могу рассчитывать. Но, к сожалению, об интеграции с JPA
.
поэтому вопросы:
как интегрировать Flyway с
persistence.xml
? И как это работает? Каждый раз провайдер JPA будетauto generate
обновление схемы Итак, как мы запускаем скрипт до или после этого?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
}