我在Rails和Java上都使用ruby。在Rails项目中工作时,我真的很喜欢使用迁移。所以我想知道是否有类似Java的迁移工具?如果没有这样的工具,将迁移用作控制Java项目使用的数据库的工具是个好主意吗?
Answers:
我使用了Hibernate的SchemaUpdate来执行与迁移相同的功能。它实际上比迁移容易,因为每次启动应用程序时,它都会检查数据库结构并将其与映射同步,因此没有多余的rake:db:migrate步骤,并且您的应用程序永远不会与运行中的数据库不同步反对。Hibernate映射文件并不比Rails迁移复杂,因此即使您未在应用程序中使用Hibernate,也可以利用它。缺点是它不如回滚,向下迁移,运行DML语句灵活。正如评论中指出的那样,它也不会删除表或列。在Hibernate初始化过程中,我运行了一个单独的方法来手动执行这些操作。
我不明白为什么您不能使用Rails迁移-只要您不介意安装堆栈(Ruby,Rake,Rails),就不必触摸应用程序。
对于之间的功能比较
对于您和其他任何人来说,这都是一个不错的开始,为您选择合适的工具
我在研究同一问题时遇到了这篇文章。关于最佳工具或方法,我尚未得出任何结论,但是到目前为止,我在其他答案中尚未提及的一个工具就是dbdeploy。我有兴趣阅读这些工具的任何比较。
其他一些相关资源:Martin Fowler和Pramod Sadalage在Evolutionary Database Design上发表的文章有些过时,以及Sadalage和Scot Ambler所著的Refactoring Databases:Evolutionary Database Design。
还有两种独立的Java类似Rails的迁移实现:
从1)基于Maven的迁移碳五
2)Hashrocket的基于蚂蚁的任务(我个人最喜欢的)
尽管这些软件包是专门为Maven和Ant编写的,但是通过一些工作,您可以将它们修改为几乎所有东西。
还有DbMaintain,它最初是在Unitils内部开发的,但现在是一个专用项目。我们目前正在使用它,并且对此感到非常满意(这并不意味着没有任何好的选择)。我在数据库+迁移书签中列出了其中的更多内容(重点放在支持Maven的工具上)。