[英]Can't get work Liquibase with spring hibernate
到目前為止,我已經在spring和標准changelog文件中使用了liquibase。 現在,我想集成它以使其休眠,以便在對實體進行任何更改時,都應該更改表並更新changelog表。
我閱讀了許多示例和教程,但無法正常工作。
我使用數據源,entityManagerFactory(denepds-on =“ liquibase”)都可以正常工作。 但是,當我添加liquibase bean時,它不會更改實體數據庫。 並引發“沒有名稱的表”異常。
如何使用liquibase-hibernate4和spring配置Liquibase?
我的liquibase bean:
<bean id="liquibase" class="liquibase.integration.spring.SpringLiquibase">
<property name="dataSource" ref="myJdbcDataSource" />
<property name="beanName" value="entityManagerFactory" />
<property name="changeLog" value="classpath:databaseChangeLog.sql" />
</bean>
我只是說beanName作為道具的entityManagerFactory來自: https://github.com/liquibase/liquibase-hibernate/wiki , http://www.liquibase.org/documentation/spring.html 。 我從這篇文章中了解到了什么。
在這篇文章中,它提到我們應該使用三個變體之一
hibernate:spring:com/example/spring.xml?bean=sessionFactory
hibernate:spring:com.example?dialect=org.hibernate.dialect.MySQL5Dialect
hibernate:spring:com.example.employee,com.example.auction?dialect=org.hibernate.dialect.MySQL5Dialect
但是當我們使用spring時我不知道如何在liquibase bean中使用它
我使用Spring,多年來在Liquibase和Hibernate上使用,我不建議您隨意使用它。 我的經驗告訴我,讓Hibernate自動更改數據庫不是一個好主意。
我不介意更改是通過hibernate使用hbm2ddl
還是通過liquibase計算而來的,而liquibase最終從hibernate計算數據庫更改。 您寧願先監督這些更改,然后再將其合並到您的更改日志中。
因此,就我而言,我更喜歡配置liquibase(使用maven)以自動編寫一個更改日志,該更改日志是通過將我的休眠映射與數據庫進行比較而獲得的(我稱之為自動更改日志)。 然后,在將變更集與變更日志合並之前,我手動對其進行檢查。
當然,您可以在每次啟動應用程序時使用SpringLiquibase bean自動運行liquibase更新,這是開箱即用的,但是當在不同環境下工作時,請小心操作...
也許您可以找到您感興趣的帖子http://malaguna.github.io/blog/2015/06/09/liquifying-your-project/
這里描述了我如何告訴我如何使用Spring,Hibernate和Liquibase。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.