2012-04-15 14 views
4

SQL Server Expressをバックエンドデータベースとして使用するJava EEアプリケーションがあります。 新しいバージョンを導入するときは、テーブルの追加、カラムの追加、カラムの削除、マージ、カラムのマージなどのデータベースを変更する必要があります。Java EEアプリケーションの更新時にデータベーススキーマを移行する

今日まで、オフラインSQLスクリプトを使用してデータベースを修正しました。スケーラビリティがなく、エラープルーンが発生します。

は、我々は@PostConstruct追加し、展開時に、システムによって使用されているデータを削除する方法を飾ったシングルトンスタートアップBeanを使用し始めます。

現在、我々が展開中に私達のデータベースをアップグレードし、一度、すべてのSQLスクリプトを排除することができるようにもDML文を発行します。

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

いくつかのスキーマ移行ツールの簡単な比較を確認できます。 http://stackoverflow.com/a/28055590/2658613 – gaboroncancio

答えて

6

最近、の使用を開始しており、非常に満足しています。 documentation is very good。要するに、一連のSQLスクリプトをバージョンとともに含めることです。フライウェイエンジンはまだ適用されていない(作成された特別なメタデータテーブルがある)SQLスクリプトを取り出して実行します。 SQLをバージョンまたはプレーンJavaで使用することができます。

+0

ありがとう、私たちはそれをチェックします。良い一日を。 –

5

トマシュの答えに加えて、あなたもLiquiBaseを使用することができます。それが提供するソリューションは、開発者にスキーマの変更を「バージョン管理」させ、最終的には完全に理解可能なスキーマ変更ログを作成します。その後、LiquiBaseを使用して、その変更ログ、またはそのサブセットを本番DBに適用できます。また、変更ログのサブセットをロールバックすることもできます。

多くの種類の変更をすぐに処理し、カスタムマイグレーションJavaクラスを使用できるようにします。

はそれを自分自身を使用することはありませんが、2007年

は、ここでは簡単overviewだからそれがオープンソース化です。

3

およびデータベース移行ツールのリストを確定するために、私はsolidbaseとはかなり満足しています。デプロイスクリプトの一部として起動しますが、シングルトンBeanで起動するアイデアはかなり面白いです。 Solidbaseのwikiにはそのような埋め込みの使用法は書かれていませんが、ソースコードクラスRunnerの素早いスキムから、あなたが探しているものです。

関連する問題