Raf*_*ter 9 hibernate database-versioning
我有一个应用程序,当应用程序第一次在计算机上运行时,Hibernate会创建我的所有表模式.这很好用.
然而,我想知道Hibernate是否有某种机制来保持数据库的版本控制,即当我运行不同版本的应用程序并且Hibernate从旧版本中找到不同的数据库模式时,Hibernate是否知道如何将一个模式迁移到另一个模式版本?考虑到Hibernate可以读取现有的模式并且可以将模式与映射描述进行比较,我认为这应该是可能的.但是我不知道如何在创建使用Liquibase/Flyway的更改脚本时告诉Hibernate迁移旧数据.
我可能没有用Google搜索正确的东西,因为Hibernate和版本控制会在审核和字段版本控制方面给你很多点击,但我更多地考虑了Liquibase/Flyway的版本控制.我从来没有考虑过这两者,但由于Hibernate不创建更新脚本而是直接操作数据库,我不知道如何使两者协同工作.
这是我第一次让Hibernate创建我的架构而不是编写我自己的脚本.我这样做是为了利用Hibernate Envers使得手动脚本创建更加繁琐.也许我错过了一些明显的东西.感谢您对此事的任何意见!
更新:我今天和Flyway的开发人员交谈,他告诉我他不会知道一个好的解决方案.也许什么都没有?
小智 11
我们的Java/Hibernate项目遇到了同样的问题,并且不希望任何代码重复工作.Hibernate"更新"功能根本不可靠,LiquidBase更好但不是百分之百的傻瓜证明.最后,我们开发了一个简单的脚本来管理以下过程:
我们脚本中的一个关键命令如下所示:
${LIQB_COMMAND} ${PREV_DB_OPTIONS} --changeLogFile=${LIQB_CHGLOG_FILE_NEW} \
diffChangeLog \
--referenceUsername=${DEV_DB_USER} \
--referencePassword=${DEV_DB_PWD} \
--referenceDriver=com.mysql.jdbc.Driver \
--referenceUrl=${DEV_DB_URL}
Run Code Online (Sandbox Code Playgroud)
这样,我们的迁移过程非常可靠,您不会两次编写模式代码.在XML中手动审查生成的更改集,但大多数时候没有问题,并且确实比手动编写架构更改操作容易得多.
| 归档时间: |
|
| 查看次数: |
3222 次 |
| 最近记录: |