7

JPOX や Hibernate などの ORM ツールを使用してデータベース スキーマをアップグレードするための一般的なソリューションを探しています。プロジェクトでそれをどのように行いますか?

私の頭に浮かんだ最初の解決策は、データベースをアップグレードするための独自のメカニズムを作成し、SQL スクリプトがすべての作業を行うことです。ただし、この場合、オブジェクト マッピングが更新されるたびに新しいスクリプトを作成することを覚えておく必要があります。また、マッピングを定義して ORM ツールにすべての作業を任せる代わりに、低レベルの SQL クエリを処理する必要があります...

そこで問題は、それを適切に行う方法です。ツールによっては、このタスクを簡素化できるかもしれません (たとえば、Rails にはそのようなメカニズムが組み込まれていると聞きました)。そうであれば、次の Java プロジェクトでどの ORM ツールを選択するかを決めるのを手伝ってください。

4

8 に答える 8

7

LiquiBaseは、データベースのリファクタリング (アップグレード) を処理するための興味深いオープン ソース ライブラリです。私はそれを使用していませんが、db スキーマをアップグレードする必要がある次のプロジェクトで間違いなく試してみます。

于 2008-09-15T16:53:08.423 に答える
2

いくつかのデータベース スキーマ アップグレード ツールのこの機能比較を確認できます。

これらのツールの SOW の質問数の比較:

  • mybatis (1049 件の質問がタグ付けされています)
  • Liquibase (663 件の質問がタグ付けされています)
  • Flyway (タグ付けされた 400 の質問)
  • DBDeploy (タグ付けされた 24 の質問)。
于 2015-01-20T21:37:04.297 に答える
2

ORM で生成されたスキーマが他の DB スキーマと異なる理由がわかりません。問題は同じです。ORMが生成スクリプトを吐き出すと仮定すると、外部ツールを使用して差分を実行できます

私はそれを試していませんが、Google はSQLCompareを 1 つのオプションとして使用して戻ってきました。他にもあると確信しています。

于 2008-09-15T16:13:22.047 に答える
2

SQL 更新スクリプトを手作業でコーディングし、継続的なビルド プロセスの一環として、スキーマを分解し、更新スクリプトを適用してスキーマを再構築します。Hibernate マッピングがスキーマと一致しない場合、ビルドは失敗します。

于 2008-10-02T15:17:51.923 に答える
1

ここでもDbMaintainが役立ちます。

于 2011-02-27T09:22:55.877 に答える
0

Hibernate を使用するときは、コマンドラインから実行するインストーラー クラスを使用します。このクラスには、データベース スキーマの作成、ベース データの挿入、およびSchemaUpdateを使用したデータベース スキーマの動的更新のオプションがあります。非常に便利だと思います。また、新しいバージョンが起動されたときに実行される 1 回限りのスクリプトを配置する場所にもなります。たとえば、既存の DB テーブルに新しいフィールドを入力します。

于 2008-09-15T16:02:27.203 に答える
0

データベースを変更するたびに更新スクリプトを作成することになりました。したがって、バージョン 10 から 11、11 から 12 などのスクリプトがあります。次に、一連のスクリプトを連続して実行して、既存のバージョンから新しいバージョンにスキップできます。起動時にこれを検出できるように、既存のバージョンをデータベースに保存しました。

はい、これにはデータベース固有のコードが含まれていました。Hibernate の主な問題の 1 つです。

于 2008-09-15T15:55:26.643 に答える
0

SubSonicのようなデータベース移行を含む ORM ツールを使用するのが最善の策だと思います。

http://subsonicproject.com/2-1-pakala/subsonic-using-migrations/

于 2008-09-15T15:54:46.443 に答える