假设您正在使用Hibernate和JBoss开发一个JavaEE应用程序.您有一个正在运行的服务器,其中包含一些重要数据.你每隔一段时间(1-2周)发布一次应用程序的下一个版本,他们会发现持久层有很多变化:
- 新实体
- 删除的实体
- 属性类型更改
- 属性名称更改
- 关系变化
如何有效地设置更新数据库架构并保留数据的系统?据我所知(我可能弄错了),Hibernate不执行ALTER COLUMN、DROP/ALTER CONSTRAINT.
谢谢, 阿特姆B.
假设您正在使用Hibernate和JBoss开发一个JavaEE应用程序.您有一个正在运行的服务器,其中包含一些重要数据.你每隔一段时间(1-2周)发布一次应用程序的下一个版本,他们会发现持久层有很多变化:
如何有效地设置更新数据库架构并保留数据的系统?据我所知(我可能弄错了),Hibernate不执行ALTER COLUMN、DROP/ALTER CONSTRAINT.
谢谢, 阿特姆B.
LiquiBase是你最好的赌注.它有一个hibernate integration模式,使用Hibernate的hbm2ddl来比较您的数据库和Hibernate映射,但是它不是自动更新数据库,而是输出一个可以在实际运行之前判断的Liquibase ChangeLog文件.
虽然更方便,但任何比较数据库和Hibernate映射的工具都会出错.有关示例,请参见http://www.liquibase.org/2007/06/the-problem-with-database-diffs.html.使用LiqueBase,您可以构建一个数据库更改列表,因为您开发的格式可以通过分支和合并在代码中幸存下来.