86

我同时使用 ruby​​ on rails 和 Java。当我在做一个 Rails 项目时,我真的很喜欢使用迁移。所以我想知道是否有类似 Java 工具的迁移?如果没有这样的工具,使用迁移作为控制 Java 项目使用的数据库的工具是个好主意吗?

4

8 回答 8

88

对于之间的功能比较

  • 飞路
  • Liquibase
  • c5-db-迁移
  • 数据库部署
  • 米巴蒂斯
  • 迁移数据库
  • 迁移4j
  • 数据库维护
  • 自动补丁

看看http://flywaydb.org

这应该是您和其他任何人为工作选择正确工具的良好开端

于 2010-10-05T19:35:04.103 回答
13

Liquibase是该领域中另一个值得一试的项目。

于 2009-08-26T19:58:41.400 回答
10

Grails有一个dbmigrate实用程序,它仿照 Rails 中的一个。由于它是在 Groovy 中实现的,因此您应该能够在任何 Java 项目中使用它。

于 2008-09-25T01:39:50.367 回答
9

我使用 Hibernate 的 SchemaUpdate 来执行与迁移相同的功能。它实际上比迁移更容易,因为每次启动应用程序时,它都会检查数据库结构并将其与映射同步,因此没有额外的 rake:db:migrate 步骤,并且您的应用程序永远不会与正在运行的数据库不同步反对。Hibernate 映射文件并不比 Rails 迁移复杂,因此即使您没有在应用程序中使用 Hibernate,也可以利用它。缺点是它不像回滚、向下迁移、运行 DML 语句那样灵活。正如评论中所指出的,它也不会删除表或列。作为 Hibernate 初始化过程的一部分,我运行了一个单独的方法来手动执行这些操作。

我不明白为什么你不能使用 Rails 迁移——只要你不介意安装堆栈(Ruby、Rake、Rails),你就不必接触你的应用程序。

于 2008-09-25T07:09:49.887 回答
6

Java 的类似 Rails 的迁移也有两个独立的实现:

1) 来自碳五的基于 Maven 的迁移

2) Hashrocket中基于 Ant 的任务(我个人最喜欢的)

尽管这些包是专门为 Maven 和 Ant 编写的,但通过一些工作,您可以使它们适应任何东西。

于 2009-05-28T14:35:32.237 回答
6

我在研究同一个问题时遇到了这篇文章。我还没有得出关于最佳工具或方法的任何结论,但是到目前为止,我遇到的一个在其他答案中没有提到的工具是dbdeploy。我有兴趣阅读这些工具的任何比较。

其他一些相关资源:Martin Fowler 和 Pramod Sadalage 关于进化数据库设计的一些陈旧的帖子,以及由 Sadalage 和 Scot Ambler 撰写的《重构数据库:进化数据库设计》一书。

于 2010-02-06T22:56:29.853 回答
4

Migrate4j似乎是一个候选者,但该项目看起来还不够成熟,无法用于生产。

于 2009-12-28T20:47:09.417 回答
2

还有DbMaintain,它最初是在 Unitils 内部开发,但现在是一个专用项目。我们目前正在使用它并且非常满意(这并不意味着没有任何好的替代品)。我在我的数据库+迁移书签中列出了更多(重点是支持 Maven 的工具)。

于 2010-10-13T16:02:47.127 回答