Gwt-rpc 仅使用 DAO。摆脱 DTO

Gwt-rpc usage DAO only. Get rid of DTO

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

网上查了很多文章(也有主要文档),我很困惑。

所以我问你:

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

对DTO的概念实在是不懂(写的跟Model差不多但是更差class)

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

所有这些将如何与通用类型超级 class 扩展 class 实现一起工作?

f.e:

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

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

DAO 也一样...

请帮忙。 我指望你的经验。

并不是说我当时是专家,但是当我开始结合使用 Hibernate(不是 JPA)和 GWT 时,这很痛苦。

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

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

我不确定即使所有集合都被急切加载,您的对象也不会包含 javassist 内容,并且可以通过 GWT-RPC 进行序列化。这给您留下了另一种选择,即定制 POJO 对象以仅包含您当时在客户端上需要的那些部分 (properties/collections) - 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 构建自定义 类,那么这可能是可行的方法。