私はRubyonRailsとJavaの両方を使用しています。Railsプロジェクトに取り組んでいるときは、移行を使用することを本当に楽しんでいます。だから私はJava用のツールのような移行があるのだろうか?そのようなツールがない場合、Javaプロジェクトで使用されるデータベースを制御するためのツールとして移行を使用することをお勧めしますか?
回答:
HibernateのSchemaUpdateを使用して、移行と同じ機能を実行しました。アプリを起動するたびにデータベース構造を調べてマッピングと同期するため、移行よりも実際には簡単です。追加のrake:db:migrateステップがなく、アプリが実行中のデータベースと同期しなくなることはありません。に対して。HibernateマッピングファイルはRailsの移行ほど複雑ではないため、アプリでHibernateを使用していなくても、それを利用できます。欠点は、ロールバック、移行、DMLステートメントの実行に関しては柔軟性がないことです。コメントで指摘されているように、テーブルや列も削除されません。Hibernate初期化プロセスの一部として、これらを手動で実行する別のメソッドを実行します。
Railsの移行を使用できなかった理由はわかりませんが、スタック(Ruby、Rake、Rails)をインストールしてもかまわない限り、アプリに触れる必要はありません。
以下のための機能比較の間
これは、あなたや他の人が仕事に適したツールを選択するための良いスタートになるはずです。
同じ質問を調べているときに、この投稿に出くわしました。私はまだ最良のツールやアプローチについて結論を出していませんが、これまで他の回答で言及されていない、私が遭遇したツールの1つはdbdeployです。これらのツールの比較を読みたいと思います。
その他の関連リソース:MartinFowlerとPramodSadalageによるEvolutionaryDatabase Designに関するやや古い投稿、および本Refactoring Databases:Evolutionary Database Design by Sadalage and ScotAmbler。
Javaのレールのような移行には2つの独立した実装もあります。
1)Mavenのベース移行カーボンファイブ
2)HashrocketからのAntベースのタスク(私の個人的なお気に入り)
これらのパッケージは特にMavenとAnt用に作成されていますが、いくつかの作業を行うことで、ほぼすべてに適応させることができます。
ありDbMaintain最初は内部で開発されたUnitilsが、現在は専用のプロジェクトですが。私たちは現在それを使用しており、非常に満足しています(これは良い選択肢がないという意味ではありません)。私はそれらの多くをデータベース+移行ブックマークにリストします(Mavenをサポートするツールに焦点を当てています)。