如何更新数据库架构而不会丢失您的数据与Hibernate?

想象一下,您正在使用Hibernate和JBoss开发Java EE应用程序。你有一个正在运行的服务器上有一些重要的数据。您可以在一段时间(1-2周)内发布下一个应用程序版本,并在持久层中进行一系列更改:

>新实体
>已删除的实体
>属性类型更改
>属性名称更改
>关系变化

如何有效地设置更新数据库模式并保留数据的系统?据我所知(我可能是错误的),Hibernate不执行alter column,drop / alter约束。

谢谢,
阿特姆

最佳答案
LiquiBase是你最好的选择。它具有hibernate integration模式,使用Hibernate的hbm2ddl来比较您的数据库和您的hibernate映射,而不是自动更新数据库,它会输出一个在实际运行之前可以检查的liquibase changelog文件。

虽然更方便,但是比较数据库和休眠映射的任何工具都会产生错误。参见http://www.liquibase.org/2007/06/the-problem-with-database-diffs.html的例子。使用liquibase,您可以创建一个数据库更改列表,因为您可以使用可以通过分支和合并生存代码的格式开发数据库更改。

转载注明原文:如何更新数据库架构而不会丢失您的数据与Hibernate? - 代码日志