【问题标题】:Migrations for Java [closed]Java的迁移[关闭]
【发布时间】:2010-09-12 23:03:30
【问题描述】:

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

【问题讨论】:

    标签: java ruby-on-rails migration


    【解决方案1】:

    对于

    之间的功能比较
    • 飞行路线
    • Liquibase
    • c5-db-迁移
    • dbdeploy
    • mybatis
    • MIGRATEdb
    • migrate4j
    • 数据库维护
    • 自动补丁

    看看http://flywaydb.org

    这应该是您和其他人为工作选择正确工具

    的良好开端

    【讨论】:

    • 嘿,我不知道 Flyway。它看起来很有趣,我会仔细看看它。感谢您提及 Flyway!
    • @Pascal Thivent 感谢您的评论!如果您确实对其进行评估,我很高兴听到您对此的意见/批评/建议,无论是在这里还是在 Flyway 的问题跟踪器中 :-) 我还将考虑将 DbMaintain 添加到比较矩阵中,因为它看起来很棒竞争对手...
    • 当然,我会的。并感谢您将 DbMaintain 添加到比较中,拥有这样的矩阵非常好。
    • 感谢您发布此信息。我今天才开始使用 Flyway。我以前使用过 liquibase,在一个项目中他们推出了自己的解决方案。 Flyway 是我所期待的 liquibase。简单,没有 xml,我可以用 java 编写更复杂的迁移。完美的。期待蚂蚁支持。
    • 当前版本的网站似乎只比较了 Flyway、Liquibase 和 MyBatis。完整的比较在其他地方是否仍然可用?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Grails 有一个 dbmigrate 实用程序,它是在 Rails 中的那个基础上设计的。由于它是在 Groovy 中实现的,因此您应该可以在任何 Java 项目中使用它。

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 它不会 100% 同步。它不会更改列、删除列或表、删除 FK 等。
        【解决方案5】:

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

        其他一些相关资源:Martin Fowler 和 Pramod Sadalage 在 Evolutionary Database Design 上发表的有些陈旧的帖子,以及 Sadalage 和 Scot Ambler 的书 Refactoring Databases: Evolutionary Database Design

        【讨论】:

          【解决方案6】:

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

          1) 来自 Carbon Five 的基于 Maven 的迁移

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

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

          【讨论】:

          • Hashrocket 自 2007 年以来未曾接触过。Carbon Five 的 c5-db-migration 产品自 2010 年以来未更新。
          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

            【讨论】:

            • 这样的工具将帮助我们更快、更安全地开发
            • @Arthur 是的,我们也有类似的工具,这是一件好事。从一个环境到另一个环境的级联模式更新现在对我们来说是一种乐趣:)
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-05-18
            • 1970-01-01
            • 1970-01-01
            • 2013-03-21
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多