web-dev-qa-db-ja.com

Javaの移行

Ruby on RailsとJavaの両方を使用しています。Railsプロジェクトで作業しているときは、マイグレーションを使用するのがとても楽しいです。 Java用のツールのような移行はあるのでしょうか?そのようなツールがない場合、Javaプロジェクトで使用されるデータベースを制御するツールとして移行を使用することは良い考えですか?

85
Josh Moore

HibernateのSchemaUpdateを使用して、マイグレーションと同じ機能を実行しました。アプリを起動するたびにデータベース構造を検査してマッピングと同期するため、移行よりも簡単です。余分なrake:db:migrateステップがなく、アプリが実行中のデータベースと同期しなくなることがありません。に対して。 HibernateマッピングファイルはRails移行よりも複雑ではないので、アプリでHibernateを使用していなくても、それを利用できます。欠点は、それよりも柔軟性が低いことです。 DMLステートメントのロールバック、移行、実行。コメントで指摘されているように、テーブルや列も削除されません。Hibernateの初期化プロセスの一部として、別のメソッドを実行して手動で実行します。

Rails migrationsを使用できなかった理由はわかりません。ただし、スタック(Ruby、Rake、Rails)のインストールを気にしない限り、操作する必要はありません。あなたのアプリ。

9
Brian Deterling

機能比較の間で

  • フライウェイ
  • リキベース
  • c5-db-migration
  • dbdeploy
  • mybatis
  • MIGRATEdb
  • migrate4j
  • dbmaintain
  • オートパッチ

http://flywaydb.org をご覧ください

これはあなたと他の誰にとっても仕事に適したツールを選択する良いスタートです

88
Axel Fontaine

Liquibase は、このドメインの別のプロジェクトで、チェックする価値があります。

13
Adam Monsen

Grails には dbmigrate ユーティリティがあり、これはRailsのユーティリティを模したものです。これはGroovyで実装されているため、どのJavaプロジェクトからでも使用できます。

10
Kyle Burton

Java用のRailsのような移行には、2つの独立した実装もあります。

1) Carbon Five からのMavenベースの移行

2) Hashrocket (私の個人的なお気に入り)のAntベースのタスク

これらのパッケージは特にMavenとAnt用に書かれていますが、いくつかの作業を行うと、ほとんどすべてのものにそれらを適合させることができます。

6
Winky

私は同じ質問を調査している間にこの投稿に出くわしました。最良のツールやアプローチについてはまだ結論に達していませんが、これまでに他の回答で言及されていないツールの1つは dbdeploy です。これらのツールの比較を読んでみたいと思います。

その他の関連リソース:Martin FowlerとPramod Sadalageの Evolutionary Database Design に関するやや古い記事、および本 Refactoring Databases:Evolutionary Database Design によるSadalageとScot Ambler。

6
Kief

Migrate4j は候補のように見えますが、プロジェクトは本番用に十分成熟していないようです。

4
reacuna

DbMaintain もあります。これは、最初に nitils の内部で開発されましたが、現在は専用プロジェクトになっています。私たちは現在それを使用しており、非常に満足しています(これは良い選択肢がないという意味ではありません)。それらの詳細を database + migration ブックマークにリストします(Mavenをサポートするツールに重点を置いています)。

2
Pascal Thivent