1.質問
クライアント側からのLAZY読み込みの既知の戦略、ソリューションは何ですか?私はこのようなものhttp://wiki.eclipse.org/Introduction_to_EclipseLink_Sessions_(ELUG)#Remote_Sessionsをチェックしていましたが、これが私の問題の解決策であるかどうか、またはこれを使用する方法がわかりません。
2.ユースケース
プレゼンテーション層(Eclipse RCP)がネットワーク経由のリモートクライアントである3層アプリケーションを開発しています。
[ Eclipse RCP ] <-----(RMI)-----> [ [EJB 3] [JPA 2] [Mysql] ]
現在、クライアントでも使用したいドメインモデルとしてJPAエンティティを使用しています。ネットワーク経由で@SessionBeanからエンティティを取得します。JPAエンティティにLAZYフィールドがある場合に問題が発生します。シリアル化後、特に私のJPAプロバイダー(EclipseLink)がネットワークの反対側にあるため、クライアントからこれらのLAZYフィールドをロードする戦略が必要です。
私は多くの実体を持つつもりです:多分30-40。そして、典型的なシナリオは、ユーザーが多くのフィールドを持つSomethingModelのリストをList
表示する場合ですが、特定の要素を変更したい場合にのみ、それらをリストに表示する必要はありません。
3.考えられる解決策
私は1つの解決策を思いつきました。たとえば、クライアント側でJPAエンティティのプロキシクラスを作成します。ドメインモデルからのコレクションフィールドが必要な場合、プロキシクラスはリモートEJBを呼び出してフィールドにデータを入力します。
class CarModelClient {
CarModel model;
public String getColor(){
model.getColor();
}
public List<Wheels> getWheels(){
CarModelFacadeRemote carFacade = //get my remote ejb
model.setWheels( carFacade.getWheels( model.getId() ) );
return model.getWheels();
}
}
まあ、それに似ています。
ご回答ありがとうございます。