Erl*_*lan 2 java spring hibernate liquibase liquibase-hibernate
到目前为止,我已经将 liquibase 与 spring 和标准变更日志文件一起使用。现在我想将其集成到休眠中,因此当我对实体进行任何更改时,它应该更改表并更新更改日志表。
我读了很多例子和教程,但无法让它发挥作用。
我使用数据源,entityManagerFactory(denepds-on="liquibase") 都工作正常。但是当我添加 liquibase bean 时,它不会从实体更改数据库。并且抛出“没有名称的表”异常。
如何使用 liquibase-hibernate4 和 spring 配置 Liquibase?
我的液体基豆:
<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>
Run Code Online (Sandbox Code Playgroud)
我刚刚从https://github.com/liquibase/liquibase-hibernate/wiki、http://www.liquibase.org/documentation/spring.html添加了 beanName prop 作为entityManagerFactory 。并做了我从这篇文章中可以理解的事情。
在这篇文章中,它提到我们应该使用三种变体之一
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
Run Code Online (Sandbox Code Playgroud)
但我不知道当我们使用 spring 时如何将它与 liquibase bean 一起使用
我使用 Spring、Liquibase 和 Hibernate 已有多年,我不建议您随心所欲地使用它。我的经验告诉我,让 Hibernate 自动更改数据库并不是一个好主意。
我不介意更改是通过 hibernate 使用hbm2ddl还是通过 liquibase 来计算,liquibase 最终会计算 hibernate 的数据库更改。您宁愿先监督这些更改,然后再将其合并到您的更改日志中。
因此,就我而言,我更喜欢配置 liquibase (使用 Maven)来自动写入通过比较我的 hibernate 映射与数据库而获得的更改日志(我称之为 autochangelog)。然后我手动检查变更集,然后将其与我的变更日志合并。
当然,您可以使用 SpringLiquibase bean 在每次启动应用程序时自动运行 liquibase 更新,这是开箱即用的,但在不同环境下工作时要小心,您可能会运行不需要的更新...
也许您可以找到您感兴趣的这篇文章http://malaguna.github.io/blog/2015/06/09/liquifying-your-project/
这里描述了我如何使用 Spring、Hibernate 和 Liquibase,就像我告诉你的那样。
| 归档时间: |
|
| 查看次数: |
2986 次 |
| 最近记录: |