呼び出したときに気づいた
SomeProxy proxyNew = someRequestContext.edit(proxyOld);
proxyNew.setSomething(somethingNew);
someRequestContext.mySaveMethod(proxyNew).fire();
から返されたエンティティ
@Override //from Locator<SomeEntity ,IdClass>
public SomeEntity find(Class<? extends SomeProxy > clazz, IdClass id) {
...
}
mySaveMethod(SomeEntity entity)
保存メソッドが呼び出されたときにサーバーで使用され、返されたエンティティと比較して新しいproxyNew のプロパティ/インスタンス変数値のみがサーバー実装に転送されます。
今。public SomeEntity find(Class<? extends SomeProxy > clazz, IdClass id)
サーバー側にデルタのみを提供するためにいくつかの比較があるため、通信の効率性があることは理解していますが、データベースからエンティティオブジェクトを取得する実装に必要な追加の処理/転送時間によって、何らかの形で相殺されると思います。
私の質問は、GWT サーバー側のサーブレット/DAO オブジェクトにサービスを提供するステートレス セッション Bean を介して公開される持続性サービスを使用して、これをシステムに正しく実装するにはどうすればよいかということです。最高の効率と最短の待ち時間が達成されるように正しく実装されています。また、誰かがこの RequestFactory の側面/プロセスをより詳細に説明してもらえますか?
私の例: OrganizerEntry
特定の期間 (1 週間) の間、永続層からエンティティを取得します。
したがって、このようなメソッド
retrieveOrganizerEntries(Date from, Date to)
は永続層で呼び出されます。
OrganizerEntry
次に、クライアント層に送信されるエンティティ オブジェクトごとに、次のような別のクエリが作成されることがわかりますretrieveOrganizerEntry(int id)
。
したがって、同じオブジェクトが 2 回照会されるだけでなく、2 回目は非常に非効率的な方法で 1 つずつ照会されます。
これはどのように改善できますか?最初のクエリの結果を何らかの形で DAO/サーブレット オブジェクトにキャッシュし public SomeEntity find(Class<? extends SomeProxy > clazz, IdClass id)
、キャッシュを検索する必要がありますか? このメソッドを返す null
か、新しく作成された空のエンティティ ( new OrganizerEntity()
) を実装し、クライアントから永続化/保存メソッドを呼び出す前に、すべてのプロパティ/インスタンス変数値を設定する方法はありますか?
このような例や説明はどこで見つけることができますか? http://www.gwtproject.org/doc/latest/DevGuideRequestFactory.htmlは私にはあまり疲れていないように見えるからです。