从Scala代码轻松创建Java DTO对象的实例

时间:2014-02-13 23:20:56

标签: java scala gwt

我正在使用Scala而不是Java来转换我的GWT项目的服务器端。我有许多RPC servlet进行数据库查找然后将结果映射到ArrayList,其中像SomeDTO这样的类可能是

  override def listTrips(): util.ArrayList[TripRoleDTO] = {
    val trd = new TripRoleDTO
    trd.setRoleType(RoleType.TripAdmin)
    trd.setTripName(sessionDataProvider.get().getSessionUser.getEmail)
    val res: util.ArrayList[TripRoleDTO] = new util.ArrayList[TripRoleDTO]()
    res.add(trd)
    res
  }

而不是

@Override
public ArrayList<TripRoleDTO> listTrips() {
    final SessionData sessionData = sessionDataProvider.get();
    final List<TripRole> tripsForUser = tripAdminProvider.get().listTripRolesForUser(sessionData.getSessionUser().getId());
    return newArrayList(transform(tripsForUser, DTOConverter.convertTripRole));
}

请注意,Java实现实际上是在进行数据库调用(我在Scala中仍在研究),但它通过Google Guava的Iterables.transform方法进行DTO转换。

由于DTO对象需要是.java文件,GWT的客户端可以使用什么是将Scala域对象转换为DTOS的优雅方式?

1 个答案:

答案 0 :(得分:1)

使用GWT RequestFactory自动创建DTO。可以使用接口和@ProxyFor注释简单地定义DTO,请参阅提供的链接中的示例。

如果由于某种原因使用RequestFactory不是替代方案,那么考虑使用Dozer将域对象映射到DTO,这经常与GWT一起使用。