我在Rails和Java上都使用ruby。当我在一个rails项目上工作时,我非常喜欢使用migrations。所以我想知道是否有类似Java的工具的迁移?如果没有这样的工具,使用迁移作为控制Java项目使用的数据库的工具是一个好主意吗?Java的迁移
Java的迁移
回答
我已经使用Hibernate的SchemaUpdate来执行与迁移相同的功能。它实际上比迁移更容易,因为每次启动应用程序时,它都会检查数据库结构并将其与映射进行同步,因此不需要额外的耙:db:migrate步骤,并且您的应用程序永远不会与正在运行的数据库不同步反对。 Hibernate映射文件不比Rails迁移更复杂,所以即使你没有在应用中使用Hibernate,你也可以利用它。缺点是它不像回滚,迁移,运行DML语句那样灵活。正如评论中指出的那样,它也不会删除表或列。我运行一个单独的方法来手动完成这些工作,作为Hibernate初始化过程的一部分。
我不明白你为什么不能使用Rails迁移 - 只要你不介意安装栈(Ruby,Rake,Rails),你就不必触摸你的应用程序。
还有的轨道状迁移两个独立实现的Java:
从 Carbon Five2)基于Ant任务
1)基于Maven的迁移从Hashrocket(我个人最喜欢的)
尽管这些包专门为Maven和Ant编写,但有些工作可以将它们适应任何东西。
自2007年以来Hashrocket并未触及。自2010年以来Carbon Five的c5-db迁移产品尚未更新。 – Green 2014-07-15 20:46:25
Liquibase是另一个在这个领域值得检查的项目。
Migrate4j似乎是一个候选人,但该项目看起来不够成熟,不适合生产使用。
我在研究同一个问题时跑过这篇文章。我还没有得出关于最佳工具或方法的任何结论,但是迄今为止我没有提到的其他答案中提到的一个工具是dbdeploy。我有兴趣阅读这些工具的任何比较。
其他一些相关资源:Martin Fowler和Pramod Sadalage在Evolutionary Database Design上有些老年人的帖子,以及Sadalage和Scot Ambler的书Refactoring Databases: Evolutionary Database Design。
对于
- 之间的功能比较迁飞
- Liquibase
- C5-DB-迁移
- dbdeploy
- 的MyBatis
- MIGRATEdb
- migrate4j
- dbmaintain
- AutoPatch
这应该是一个良好的开端,为您和其他任何人选择工作
嘿,我没有意识到Flyway。它看起来很有趣,我会仔细看看它。感谢您提及Flyway! – 2010-10-13 13:42:36
@Pascal Thivent感谢您的评论!如果您确实评估过,我很乐意听到您对此的意见/批评/建议,无论是在此处还是在Flyway的问题跟踪器中:-)我还会考虑将DbMaintain添加到比较矩阵中,因为它看起来很棒竞争对手... – 2010-10-14 09:30:33
正确的工具也有DbMaintain最初在Unitils内开发,但现在是一个专门的项目。我们目前正在使用它,并且非常满意(这并不意味着没有任何好的选择)。我在我的database+migration书签中列出了更多(其中重点介绍了支持Maven的工具)。
- 1. Java中的Cassandra迁移库
- 2. 的Java EJB迁移到Spring
- 3. PHP到Java的迁移
- 4. 春豆没有注入基于迁移路线的Java迁移
- 5. ARCGIS Flex - Java脚本迁移
- 6. 从C#迁移到Java
- 7. 将openssl迁移到java
- 8. 从Java迁移到C#
- 9. 从Rails迁移到Java Spring
- 10. 从Java 6迁移到Kotlin
- 11. 从Java Spring迁移到Spring.NET
- 12. SAXParseException从Java 5迁移到Java 6
- 13. 的BigQuery数据迁移上的Java
- 14. 从普通的Java迁移到Struts2的
- 15. 迁移序列化迁移
- 16. EF迁移 - 启用迁移
- 17. git-svn迁移后:稍后迁移未迁移的分支?
- 18. 标记Rails迁移的迁移
- 19. 无法迁移挂起的迁移
- 20. EF迁移:自动迁移中的RenameColumn?
- 21. PostgreSQL的迁移
- 22. 的Joomla迁移
- 23. 迁移
- 24. 迁移
- 25. 迁移
- 26. 迁移
- 27. 迁移
- 28. 迁移
- 29. 从singletone迁移到java ee injection
- 30. 考虑从Java/Spring MVC迁移到Grails
它不会100%同步它。它不会更改列,删除列或表格,删除FK等。 – cherouvim 2009-08-26 20:06:16