处理现有JPA持久性类中的更新的策略

RKS*_*nha 6 java data-migration ejb jpa

我们正在做一个我们计划使用JPA Persistence的项目.我们认为,一旦项目上线,可能需要更改数据模型.

我的疑问是,有哪些不同的策略可以处理这种变化.特别是我有以下问题:

  1. 使用更新的JPA类,将它们合并到现有数据库模式中的最佳实践是什么?

  2. 使用JPA,是否有任何最佳实践,存档旧数据,更新数据库模式,并再次将数据库迁移到新模式?

  3. 有哪些变化(广义上讲)会使这种迁移变得不可能?

Hei*_*upp 1

在 RHQ ( http://rhq-project.org/ ) 中,我们有一些 dbutils,它们具有 XML 格式的模式描述,用于填充空数据库上的初始模式,然后另一个 xml 文件将对此基本模式的更改注册为单独的DDL 和 DML 语句的“差异”。

每当 JPA 类发生更改(以与架构相关的方式)时,两个 XML 文件都会更新。在安装程序的下一次运行时,它将查看现有数据库,收集其版本,然后执行从数据库中的版本到最新版本的所有更新步骤。

此 dbutils 代码可在 git 中找到。

还有其他框架(例如liquibase)可以在这里为您提供帮助。