4

SQL Server Express をバックエンド データベースとして使用する Java EE アプリケーションがあります。新しいバージョンをデプロイするときは、データベースを変更する必要があります: テーブルの追加、列の追加、列の削除、テーブルの結合、列の結合など。

今日までオフライン SQL スクリプトを使用してデータベースを変更していましたが、このソリューションはスケーラブルではなく、非常にエラーが排除されています。

@PostConstruct で装飾されたメソッドを持つシングルトン スタートアップ Bean を使用して、展開中にシステムによって使用されるデータを追加および削除します。

DML ステートメントも発行して、デプロイ中にデータベースをアップグレードし、SQL スクリプトを完全に削除できるようにします。

  1. 誰かがそれをやろうとしましたか、それは良い方向ですか?
  2. entityManager.unwrap メソッドを使用するか、JDBC DataSource リソースをシングルトン スタートアップ Bean に単純に注入する必要がありますか?
4

3 に答える 3

7

私たちは最近を使い始めましたが、とても満足しています。ドキュメントは非常に優れています。つまり、一連の SQL スクリプトとバージョンを含めます。Flyway エンジンは、まだ適用されていない (特別なメタデータ テーブルが作成されている) SQL スクリプトを取得して実行します。SQL をバージョン付きで使用することも、プレーンな Java を使用することもできます。

于 2012-04-15T12:05:50.017 に答える
6

Tomaszの回答に加えて、LiquiBaseを使用することもできます。それが提供するソリューションは、開発者にスキーマ変更を「バージョン管理」することを強制するため、最終的に本番環境に到達したときに、完全に理解できるスキーマ変更ログが得られます。次に、LiquiBaseを使用して、その変更ログまたはそのサブセットを本番DBに適用できます。変更ログのサブセットをロールバックすることもできます。

すぐに使用できるさまざまな種類の変更を処理し、カスタム移行Javaクラスの使用も可能にします。

自分で使用したことはありませんが、2007年からオープンソースになっています。

ここに簡単な概要があります。

于 2012-04-15T12:41:43.570 に答える
3

データベース移行ツールのリストを完成させるために、私はsolidbaseに非常に満足しています。デプロイ スクリプトの一部として起動しますが、シングルトン Bean で起動するというアイデアは非常に興味深いものです。Solidbase の wiki には、そのような組み込みの使用法が記載されていませんが、ソース コード クラスRunnerをざっと見てみると、探しているものがあります。

于 2012-04-15T18:49:02.780 に答える