Ruby on RailsとJavaの両方を使用しています。Railsプロジェクトで作業しているときは、マイグレーションを使用するのがとても楽しいです。 Java用のツールのような移行はあるのでしょうか?そのようなツールがない場合、Javaプロジェクトで使用されるデータベースを制御するツールとして移行を使用することは良い考えですか?
HibernateのSchemaUpdateを使用して、マイグレーションと同じ機能を実行しました。アプリを起動するたびにデータベース構造を検査してマッピングと同期するため、移行よりも簡単です。余分なrake:db:migrateステップがなく、アプリが実行中のデータベースと同期しなくなることがありません。に対して。 HibernateマッピングファイルはRails移行よりも複雑ではないので、アプリでHibernateを使用していなくても、それを利用できます。欠点は、それよりも柔軟性が低いことです。 DMLステートメントのロールバック、移行、実行。コメントで指摘されているように、テーブルや列も削除されません。Hibernateの初期化プロセスの一部として、別のメソッドを実行して手動で実行します。
Rails migrationsを使用できなかった理由はわかりません。ただし、スタック(Ruby、Rake、Rails)のインストールを気にしない限り、操作する必要はありません。あなたのアプリ。
機能比較の間で
http://flywaydb.org をご覧ください
これはあなたと他の誰にとっても仕事に適したツールを選択する良いスタートです
Liquibase は、このドメインの別のプロジェクトで、チェックする価値があります。
Java用のRailsのような移行には、2つの独立した実装もあります。
1) Carbon Five からのMavenベースの移行
2) Hashrocket (私の個人的なお気に入り)のAntベースのタスク
これらのパッケージは特にMavenとAnt用に書かれていますが、いくつかの作業を行うと、ほとんどすべてのものにそれらを適合させることができます。
私は同じ質問を調査している間にこの投稿に出くわしました。最良のツールやアプローチについてはまだ結論に達していませんが、これまでに他の回答で言及されていないツールの1つは dbdeploy です。これらのツールの比較を読んでみたいと思います。
その他の関連リソース:Martin FowlerとPramod Sadalageの Evolutionary Database Design に関するやや古い記事、および本 Refactoring Databases:Evolutionary Database Design によるSadalageとScot Ambler。
Migrate4j は候補のように見えますが、プロジェクトは本番用に十分成熟していないようです。
DbMaintain もあります。これは、最初に nitils の内部で開発されましたが、現在は専用プロジェクトになっています。私たちは現在それを使用しており、非常に満足しています(これは良い選択肢がないという意味ではありません)。それらの詳細を database + migration ブックマークにリストします(Mavenをサポートするツールに重点を置いています)。