2

私は GWT-RPC の大規模な実装を行っており、実際に RequestFactory に移行する代替手段を評価しています。私がそうしている基本的な理由は、GWT-RPC が生成する TypeSerializers ソリューションと、実際に私の場合は全体の 60% 以上を表すシリアライズ/デシリアライズ用に生成された巨大なサイズのコードにあまり満足していないためです。 JS の結果のコード。

そのため、1 週間にわたって requestFactory についてすべて読んでいて、最初の印象は、API は永続的なエンティティの管理に限定されているというものでしたが、API がクエリ結果プロキシをどのようにサポートするかが明確に示されていません。

ValueProxy を使用して実行できると読みましたが、それを実行する良い例が見つかりませんでした。つまり、先月の上位 10 クライアントの売上ランキングを提供する必要があると仮定します。そのような情報は RPC 経由で簡単に提供できますが、RequestFactory ではわかりません。プロキシするドメイン オブジェクトがありません。

GWT-RPC を介して、次のようなサービス メソッドがあります。

List<ClientRankingDTO> getClientRanking(String clientCode, Date fromDate, Date untilDate);

私の ClientRankingDTO は次のようになります。

public class ClientRankingDTO implements Serializable {

    private String clientCode;
    private String clientDescription;
    private Integer rankingPosition;
    private BigDecimal amount;
    // Getters and setters are hidden for simplicity
}

したがって、私の DAO レイヤーでは、対応するランキングを計算し、対応する結果で ClientRankingDTO のリストを生成する SalesStatistics ドメイン モデル エンティティに対する何らかのメソッドを用意します。

これは、次のような単純なクエリで実行できます。

Select top 10 client_code, sum(amount) from sales_stats A 
       where A.sales_date>=fromDate 
         and A.sales_date<=untilDate 
group by client_code
order by amount desc

選択した ORM で実装されます。

私の質問は、この種のサービスを RequestFactory でどのように実装できますか?

4

1 に答える 1

1

ValueProxyの代わりに使用するだけでEntityProxy、RequestFactory を GWT-RPC に似た「単純な RPC」メカニズムに変えることができます。

プロキシー:

@ProxyFor(ClientRankingDTO.class)
interface ClientRankingProxy extends ValueProxy {
  // getters for the properties, no need for setters if it's only server-to-client
}

次に、RequestContext(クライアント側)で:

Request<ClientRankingProxy> getClientRanking(String clientCode, Date fromDate, Date untilDate);

サーバー側のサービスでは、次のようになります。

public ClientRankingDTO getClientRanking(String clientCode, Date fromDate, Date untilDate) {
  // your request to the database, mapping the result to ClientRankingDTO
}
于 2011-08-24T00:08:23.610 に答える