Gwt-rpc 仅使用 DAO。摆脱 DTO
Posted
技术标签:
【中文标题】Gwt-rpc 仅使用 DAO。摆脱 DTO【英文标题】:Gwt-rpc usage DAO only. Get rid of 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 也是如此......
请帮忙。 我依靠你的经验。
【问题讨论】:
【参考方案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 的自定义类,这可能是您要走的路。
【讨论】:
以上是关于Gwt-rpc 仅使用 DAO。摆脱 DTO的主要内容,如果未能解决你的问题,请参考以下文章
用Jmeter代理服务器录制压力脚本,摆脱仅支持ie的badboy