簡體   English   中英

春季休眠無法使用Liquibase

[英]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/wikihttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM