0

私はかなり長い間これに悩まされてきました。誰かが私に光を当ててくれることを願っています.

Swing/RCP などのリッチ クライアント プラットフォームでは、データベースから取得したエンティティ オブジェクトをどのように管理できますか?

クライアント/サーバー アーキテクチャを使用せず、クライアントをデータベースに直接接続させる場合、JPA/EntityManager の助けを借りて、これは非常にうまく機能します。この場合、UI 上のすべてのエンティティ オブジェクトは EntityManager によって管理され、それらの間のすべての関係も適切に維持されます。JPA からの LazyInitialization Exception にも問題はなく、クライアントと EntityManager の両方が同じ JVM にあるためです。同じエンティティを持つオブジェクトの重複はありません。

ただし、サーバーをクライアントから分離したい場合、クライアント UI はエンティティからマップされた DTO オブジェクトのみを処理します。これらの DTO オブジェクトを同期させるのは大きな頭痛の種です。同じサーバー側エンティティを表している場合でも、サーバー要求ごとに新しい DTO オブジェクトが作成されます。クライアント側の DTO の関係も非常に脆弱です。1 つのオブジェクトの変更は、同じエンティティのすべての重複から簡単に確認できません。

クライアント側の EntityManager として機能できるフレームワーク、またはこのシナリオで機能するキャッシュ メカニズムはありますか? どんな提案でも大歓迎です!

よろしく、ウードン

4

1 に答える 1

0

EclipseLinkは、サーバー側セッションと通信するリモート・クライアントにEclipseLink SessionおよびUnitOfWorkインタフェースを提供するRemoteSessionアーキテクチャをサポートしています。

これは、ファット クライアントの 3 層アーキテクチャの時代に、JavaEE や Web サービスが登場する前に人気がありました。それ以来、あまり使用されておらず、現在 JPA をサポートしていません。最近では、ほとんどの人がファット クライアントではなく Web クライアントを使用しているか、DTO を介して独自のクライアント/サーバー通信を制御したり、XML を使用したりすることを好むようです。そのため、リモート EntityManager が最適なアーキテクチャであるかどうかはわかりません。

既存の RemoteSession を拡張することは難しくないため、この機能の EclipseLink の機能強化をログに記録するか、ネイティブの EclipseLink API を使用することができます。

于 2012-06-28T14:04:27.270 に答える