首页 > 开发 > JAVA > 正文

远程合作开发时如何同步每个人的表结构(Java Spring环境)

2017-09-07 09:24:09  来源:网友分享

平时公司内开发都是使用同一数据库,现在需要和别人远程合作开发,如何能同步两者开发时表结构的修改?.NET中的EntityFramework和RoR中ActiveRecord提供的脚手架工具都可以自动跟踪历史修改,但是Java中的Hibernate似乎没有对应的功能。

现在能想到的是下面方案
1.用版本管理同步一份SQL文件,然后用diff工具比较再修改表结构。
2.用版本管理工具管理脚本,每一次变更就多一个脚本。这样省掉了比较,然后手写更改代码。但是似乎不容易跟踪从那个文件开始执行。


@greatghoul 提出了可以使用其他成熟的数据库迁移工具来维护数据库,比如单单用Django,来维护数据库迁移。且提供了一可用的迁移工具,参见 Alembic

解决方案

Java 里面似乎没有什么好的 Database Migration 工具。

可以尝试下 Python 的 Alembic 或者 Rails 的 AcitveRecord Migration

单独建个项目,用来维护 Migration 脚本,然后每次有更新就执行将数据库结构同步到最新版就好了。

当然,你也可以搜索下 Java 的 Migration 工具,比如 flywaydb,有兴趣的话,可以来听一听。


如果你在西安,本周六(12月14日)下午1:30,我们GDG-Xian 会在零一广场百怡咖啡中有一个活动,我正好有一个 Alembic Database Migration 的话题,有时间的话,不妨来听一听。