我正在寻找使用 ORM 工具(例如 JPOX 或 Hibernate)升级数据库架构的通用解决方案。您在项目中是如何做到的?

我想到的第一个解决方案是创建自己的数据库升级机制,并使用 SQL 脚本完成所有工作。但在这种情况下,我必须记住每次更新对象映射时都要创建新脚本。而且我仍然需要处理低级 SQL 查询,而不仅仅是定义映射并允许 ORM 工具完成所有工作...

所以问题是如何正确地做到这一点。也许有些工具可以简化这个任务(例如,我听说 Rails 内置了这样的机制),如果是这样,请帮助我决定为我的下一个 Java 项目选择哪个 ORM 工具。

有帮助吗?

解决方案

液体基地 是一个有趣的开源库,用于处理数据库重构(升级)。我还没有使用过它,但肯定会在我需要升级数据库模式的下一个项目中尝试一下。

其他提示

我不明白为什么 ORM 生成的模式与其他数据库模式有任何不同 - 问题是相同的。假设你的 ORM 会生成一个生成脚本,你可以使用外部工具来进行比较

我没试过,但谷歌回来了 SQL比较 作为一种选择 - 我确信还有其他选择。

我们手工编写 SQL 更新脚本,并拆除架构并应用更新脚本重建它,作为我们持续构建过程的一部分。如果任何 hibernate 映射与架构不匹配,构建将会失败。

数据库维护 也可以在这里提供帮助。

你可以检查这个 特征比较 一些数据库模式升级工具。

其中一些工具的 SOW 中问题数量的比较:

我认为你最好的选择是使用包含数据库迁移的 ORM 工具,例如 亚音速:

http://subsonicproject.com/2-1-pakala/subsonic-using-migrations/

每次更改数据库时,我们最终都会制作更新脚本。所以有一个版本10到11、11到12等的脚本。然后我们可以运行任何连续的脚本集以从某个现有版本跳到新版本。我们将现有版本存储在数据库中,以便我们可以在启动时检测到这一点。

是的,这涉及数据库特定的代码!Hibernate 的主要问题之一!

使用 Hibernate 时,我使用一个从命令行运行的安装程序类,并具有用于创建数据库模式、插入基础数据以及使用以下命令动态更新数据库模式的选项: 架构更新. 。我发现它非常有用。它还为我提供了一个放置一次性脚本的位置,这些脚本将在新版本启动时运行,例如填充现有数据库表中的新字段。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top