1

共通のデータベースを共有する複数のクライアントの同期に関する基本的な概念について、非常に重要な質問があります。

永続化のために Java と JPA を使用して分散アプリケーションを設計する予定です。すべての企業データをホストする中央データベースがあり、複数のクライアントがデータのクエリのためにこのデータベースに接続していると仮定すると、特定のクライアントの同期を (データベース内のデータによって) 維持するための最良の方法は何でしょうか?

たとえば、クライアント A は顧客の姓を更新しますが、クライアント B はすでにデータベースにログインしており、永続コンテキストを取得しています。顧客のプロパティの変更についてクライアント B に通知するにはどうすればよいですか?

JPAで、変更時に永続コンテキストでエンティティをテストする可能性はありますか? それとも、すべてのアクティブなクライアントにデータベースの変更を通知する JMS のようなネットワーク サービスが必要ですか?

どんな提案でも大歓迎です!前もって感謝します...

4

1 に答える 1

1

JPA プロバイダーがデータをキャッシュするかどうかによって異なります。キャッシュがなくても心配する必要はありません。データは毎回データベースから取得されます。キャッシングでは、クライアントが古いデータを持たないようにするために、ある種の分散キャッシュが必要になります。使用しているJPAプロバイダーについて言及していません。Eclipselink には独自の分散キャッシュ実装が含まれていますが、CacheSessionCustomizer を設定してオンにする必要があることに注意してください。デフォルトでは、Eclipselink は最新の 100 個のエンティティをキャッシュするため、分散キャッシュを有効にしないと、古いデータが保証されます。Hibernate では ehcache のようなものを使用できますが、私自身はそれを使用したことがないので、あまりコメントできません。

于 2012-03-08T17:33:54.297 に答える