【问题标题】:Gwt-rpc usage DAO only. Get rid of DTOGwt-rpc 仅使用 DAO。摆脱 DTO
【发布时间】:2015-10-11 19:44:54
【问题描述】:

我即将开始新的 java 项目,我认为 GWT 作为我的框架。

我在互联网上查看了很多文章(主要文档也是),我很困惑。

所以我问你:

我可以使用 jpa 实体与 DAO 一起工作,并通过网络发送到客户端吗?

我真的不明白DTO的概念(写的几乎一样但是更差的Model类)

如果我要通过网络向客户端发送实体,如何使用可序列化瞬态注释来不序列化和发送类的方法、参数?有可能吗?

所有这些将如何与通过正确的类实现扩展的通用类型超类一起工作?

f.e:

public class GenericModel extends GenericModel<T> {
     //some generic code
}

public class RightModel extends GenericModel<RightModel> {
    // some right class code
}

DAO 也是如此......

请帮忙。 我依靠你的经验。

【问题讨论】:

    标签: gwt serialization dao dto gwt-rpc


    【解决方案1】:

    当时我并不是专家,但是当我开始将 Hibernate(不是 JPA 本身)和 GWT 结合起来时,我感到很痛苦。

    您不能只通过 Hibernate 托管对象发送的原因(我猜 JPA 的计数相同,无论底层技术如何),是因为它们包含像 javassist 这样的字节码操作内容。 GWT 根本不喜欢这样,您不能通过 GWT RPC 线路发送这些对象。

    当然,这也没有任何意义:当您在 DAO 上调用 getter 时,您不能期望您的 Javascript(客户端)调用 SQL 来延迟加载集合(因为这就是服务器端发生的情况) DAO 对象,这就是 javassist 魔术在你背后做的事情)。

    我不确定即使所有集合都被急切地加载,你的对象是否会没有 javassist 的东西,并且可以通过 GWT-RPC 进行序列化。这为您留下了另一种选择,即定制 POJO 对象以仅包含您当时在客户端上需要的那些部分(属性/集合) - DTO。

    从那时起,GWT 发生了很多事情,我知道一些与 RPC 完全不同的东西,那就是 RequestFactory(请参阅 http://www.gwtproject.org/doc/latest/DevGuideRequestFactory.html)。我自己没有使用过,但它声称make it easy to build data-oriented (CRUD) apps with an ORM-like interface on the client。因此,如果您不想构建用于连接 RPC 的自定义类,这可能是您要走的路。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-05
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多