GWT RequestFactory,如何实现查询结果DTO

GWT RequestFactory,如何实现查询结果DTO,gwt,gwt-rpc,requestfactory,Gwt,Gwt Rpc,Requestfactory,我有一个GWT-RPC的大型实现,实际上我正在评估迁移到RequestFactory的替代方案。 我这样做的基本原因是因为我对GWT-RPC产生的TypeSerializers解决方案不太满意,而且为序列化/反序列化生成的大量代码实际上占整个JS结果代码的60%以上 因此,一周来我一直在阅读关于requestFactory的所有内容,我的第一印象是API仅限于持久实体的管理,但它没有清楚地显示API将如何支持查询结果代理 我读到它可以通过使用ValueProxy来完成,但我找不到任何这样做的好例

我有一个GWT-RPC的大型实现,实际上我正在评估迁移到RequestFactory的替代方案。 我这样做的基本原因是因为我对GWT-RPC产生的TypeSerializers解决方案不太满意,而且为序列化/反序列化生成的大量代码实际上占整个JS结果代码的60%以上

因此,一周来我一直在阅读关于requestFactory的所有内容,我的第一印象是API仅限于持久实体的管理,但它没有清楚地显示API将如何支持查询结果代理

我读到它可以通过使用ValueProxy来完成,但我找不到任何这样做的好例子。 我的意思是,我需要提供上个月前10名客户的销售排名。 这样的信息很容易通过RPC提供,但对于RequestFactory,我不确定。 我没有任何要代理的域对象

通过GWT-RPC,我将拥有如下服务方法:

List<ClientRankingDTO> getClientRanking(String clientCode, Date fromDate, Date untilDate);
因此,在我的DAO层,我将在SalesStatistics域模型实体上使用一些方法来计算相应的排名,并生成ClientRankingDTO列表和相应的结果

这可以通过以下简单查询完成:

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
从销售统计数据A中选择前10名客户代码、金额
其中A.sales\u date>=fromDate

A.sales_date只需使用
ValueProxy
而不是
EntityProxy
,就可以将RequestFactory变成一种“简单的RPC”机制,类似于GWT-RPC

代理:

@ProxyFor(ClientRankingDTO.class)
接口ClientRankingProxy扩展了ValueProxy{
//属性的getter,如果只是服务器到客户端,则不需要setter
}
然后,在
RequestContext
(客户端)中:

Request getClientRanking(字符串clientCode、datefromdate、Date untilDate);
在服务器端的服务中:

public ClientRankingDTO getClientRanking(字符串clientCode,datefromdate,Date untilDate){
//将请求映射到数据库,并将结果映射到ClientRankingDTO
}
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