5

複数の JPA パーシスタンス ユニットが同じデータベースを指し、異なる Java プロジェクトで同時にサーバーにデプロイされることはありますか? 同時とは、同時に展開するのではなく、一緒に展開するという意味です。hsqldb データベースを使用しています。

私のプロジェクトにはクライアントサーバーモデルがあります。サーバーがデータを入力し、クライアントが別のプロジェクトでそのデータにアクセスする単一の統合データベーステーブルがあります。サーバーを介してデータベースに正常にデータを入力できます。しかし、クライアント プロジェクトを展開すると、データベースのすべてのデータが消去されます。

<property name="hibernate.hbm2ddl.auto" value="update" />両方の永続ユニットに使用しています。

4

1 に答える 1

3

複数の JPA パーシスタンス ユニットが同じデータベースを指し、異なる Java プロジェクトで同時にサーバーにデプロイされることはありますか?

両方のプロジェクトで互換性のないマッピングがない限り、これは機能するはずです。ただし、第 2 レベルのキャッシュは使用できません。

しかし、クライアント プロジェクトを展開すると、データベースのすべてのデータが消去されます。(...)

hbm2ddl.autoこれは実際にはset toで期待するupdate動作ではありませんが、「クラスターのような」環境 (複数の JVM が同時に更新を実行する) で使用した場合に動作が適切に定義されているかどうかはわかりません。

サーバー部分の初期化が完了したら、クライアントを展開するとどうなりますか?

私のアドバイス:

  • ロギングをセットアップして、何が起こっているかを正確に確認します
  • 同じエンティティを共有している場合はupdate、クライアントとサーバーでは使用しないでください (ただし、1 つずつ行う場合は問題になりません)。
  • 最終的に、運用データベースではまったく使用updateしないでください。
于 2010-10-08T03:41:20.213 に答える