0

私は、JSF、JPAインストールとしてのEclipseLink2、およびNetbeansを使用したバックエンドデータベースとしてのmySQLを使用してJavaEEアプリケーションを開発しています。

既存のエンティティに新しい属性を追加したり、新しいエンティティを作成したりする場合を除いて、アプリケーションは正常に機能します。Persistance.xmlファイルでdropandcreateオプションを選択すると、アプリケーションはエラーなしで再実行されますが、以前のエントリを含むデータベース全体が削除されます。

本番環境に移行するとき、新しいエンティティを追加するときにデータベースのデータを失うわけにはいきません。これを克服する方法はありますか?データベーススキーマを使おうとしましたが、その方法がわかりませんでした。

4

1 に答える 1

2

スキーマ生成のオプションは3つだけです(詳細はソース)。

  • なし:何も生成しません
  • create-tables:通常、新しいテーブルを作成し、古いテーブルにデータを保持します
  • drop-and-create-tables:古いテーブルが削除され、新しいテーブルが作成されるため、すべてのデータが失われます。

ご覧のとおり、これらはいずれも、データを保持して列を追加する必要があるシナリオをサポートしていません。たとえば、列のタイプの変更や一般的なデータの変換など、自動スキーマ生成でサポートされていない他の多くのシナリオがあることをおそらく理解できます。

あなたの場合、スキーマの生成は機能しないので、それを開発時のツールとして保持し、自分で本番用のスキーマを作成する方法を学ぶことをお勧めします。この問題についてのより多くの意見は、この議論から見つけることができます。これはHibernateに関するものなので、プロパティ名は異なりますが、問題はEclipseLinkでも同じです。

于 2012-05-29T05:44:14.790 に答える