【发布时间】:2010-09-12 23:03:30
【问题描述】:
我同时使用 ruby on rails 和 Java。当我在做一个 Rails 项目时,我真的很喜欢使用迁移。所以我想知道是否有类似 Java 工具的迁移?如果没有这样的工具,使用迁移作为控制 Java 项目使用的数据库的工具是个好主意吗?
【问题讨论】:
标签: java ruby-on-rails migration
我同时使用 ruby on rails 和 Java。当我在做一个 Rails 项目时,我真的很喜欢使用迁移。所以我想知道是否有类似 Java 工具的迁移?如果没有这样的工具,使用迁移作为控制 Java 项目使用的数据库的工具是个好主意吗?
【问题讨论】:
标签: java ruby-on-rails migration
对于
之间的功能比较这应该是您和其他人为工作选择正确工具
的良好开端【讨论】:
Liquibase 是该域中另一个值得一试的项目。
【讨论】:
我使用 Hibernate 的 SchemaUpdate 来执行与迁移相同的功能。它实际上比迁移更容易,因为每次启动应用程序时,它都会检查数据库结构并将其与映射同步,因此没有额外的 rake:db:migrate 步骤,并且您的应用程序永远不会与正在运行的数据库不同步反对。 Hibernate 映射文件并不比 Rails 迁移复杂,因此即使您没有在应用程序中使用 Hibernate,也可以利用它。缺点是它不像回滚、向下迁移、运行 DML 语句那样灵活。正如 cmets 中所指出的,它也不会删除表或列。作为 Hibernate 初始化过程的一部分,我运行了一个单独的方法来手动执行这些操作。
我不明白为什么你不能使用 Rails 迁移 - 只要你不介意安装堆栈(Ruby、Rake、Rails),你就不必接触你的应用程序。
【讨论】:
我在研究同一个问题时遇到了这篇文章。我还没有得出关于最佳工具或方法的任何结论,但我遇到的一种工具是dbdeploy,到目前为止其他答案中还没有提到。我有兴趣阅读这些工具的任何比较。
其他一些相关资源:Martin Fowler 和 Pramod Sadalage 在 Evolutionary Database Design 上发表的有些陈旧的帖子,以及 Sadalage 和 Scot Ambler 的书 Refactoring Databases: Evolutionary Database Design。
【讨论】:
还有两个独立的 Java 类 Rails 迁移实现:
1) 来自 Carbon Five 的基于 Maven 的迁移
2) Hashrocket(我个人最喜欢的)基于 Ant 的任务
虽然这些包是专门为 Maven 和 Ant 编写的,但通过一些工作,您可以使它们适应任何东西。
【讨论】:
Migrate4j 似乎是一个候选者,但该项目看起来还不够成熟,无法用于生产。
【讨论】:
还有DbMaintain,它最初是在Unitils 内部开发的,但现在是一个专门的项目。我们目前正在使用它并且非常满意(这并不意味着没有任何好的替代品)。我在我的database+migration 书签中列出了更多它们(重点是支持 Maven 的工具)。
【讨论】: