我有一个大型的 GWT-RPC 实现,实际上我正在评估转移到 RequestFactory 的替代方案。我这样做的基本原因是因为我对 GWT-RPC 产生的 TypeSerializers 解决方案以及为序列化/反序列化生成的大量代码在我的情况下实际上占了整体的 60% 以上并不十分满意JS 生成的代码。
因此,一周以来我一直在阅读有关 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 层,我将在 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
使用您选择的 ORM 实现。
我的问题是如何使用 RequestFactory 实现这种服务?