Java迁移


85

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

Answers:


8

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

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


22
它不会100%同步。它不会更改列,删除列或表,删除FK等
。– cherouvim

88

对于之间的功能比较

  • 飞路
  • 液基
  • c5-db迁移
  • dbdeploy
  • Mybatis
  • MIGRATEdb
  • migration4j
  • dbmaintain
  • 自动补丁

看看http://flywaydb.org

对于您和其他任何人来说,这都是一个不错的开始,为您选择合适的工具


2
嘿,我并不了解Flyway。它看起来很有趣,我将对其进行仔细的研究。感谢您提及Flyway!
Pascal Thivent

@Pascal Thivent感谢您的评论!如果您确实对其进行了评估,那么无论是在此处还是在Flyway的问题跟踪器中,我都会很高兴听到您对此的观点/批评/建议:-)我还将考虑将DbMaintain添加到比较矩阵中,因为它看起来很棒竞争对手...
Axel Fontaine 2010年

相信我会。并且感谢您将DbMaintain添加到比较中,拥有这样一个矩阵非常好。
Pascal Thivent

3
感谢您发布此信息。我今天才刚开始使用Flyway。我以前使用过liquibase,在一个项目中,他们推出了自己的解决方案。Flyway是我所期望的liquibase。简单,没有xml,我可以用Java编写更复杂的迁移。完善。期待蚂蚁的支持。
nogridbag 2011年

1
该网站的当前版本似乎仅比较Flyway,Liquibase和MyBatis。仍然可以在其他地方获得完整的比较吗?
Zero3 2013年




6

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

从1)基于Maven的迁移碳五

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

尽管这些软件包是专门为Maven和Ant编写的,但是通过一些工作,您可以将它们修改为几乎所有东西。


5
自2007年以来未触及过Hashrocket。CarbonFive的c5-db-migration产品自2010
Green


2

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


1
诸如此类的工具将帮助我们更快,更安全地发展
Arthur Ronald 2010年

@Arthur是的,我们也有类似的工具非常好。现在,从一个环境到另一个环境的级联更新模式是我们的荣幸:)
Pascal Thivent 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.