我即将开始新的java项目,我认为GWT是我的框架。
我在互联网上查了很多文章(主要文件也是如此),我很困惑。
所以我问你:
我可以使用jpa实体与DAO一起使用,并通过网络发送给客户端吗?
我真的不明白DTO的概念(编写几乎相同但更差的模型类)
如果我要通过网络向客户端发送实体,如何使用Serializable Transient注释来序列化和发送方法,类的参数?它甚至可能吗?
如何通过正确的类实现扩展Generic Typed Superclass所有这些?
f.e:
public class GenericModel extends GenericModel<T> {
//some generic code
}
public class RightModel extends GenericModel<RightModel> {
// some right class code
}
DAO也一样......
请帮忙。 我依靠你的经验。
答案 0 :(得分:1)
当时并不是说我是专家,但当我开始将Hibernate(不是JPA)和GWT结合起来时,这是一个痛苦。
你不能通过Hibernate托管对象发送的原因(我猜这与JPA相同,无论底层技术如何)是因为它们包含像 javassist 。 GWT根本不喜欢这样,你不能通过GWT RPC线发送这些对象。
当然,它也没有意义:当您在DAO上调用getter时,您不能指望您的Javascript(客户端)调用SQL来延迟加载集合(因为那样&#39;这些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的自定义类,这可能就是您的选择。