Gwt 请求工厂';s实体关系

Gwt 请求工厂';s实体关系,gwt,request,requestfactory,gwt2,Gwt,Request,Requestfactory,Gwt2,我不太清楚GWT中RequestFactory的Request及其()实现的细节。请看这里 问题1: 查询服务器时,RequestFactory不会自动 填充对象图中的关系。要执行此操作,请使用with() 方法,并将相关属性名称指定为字符串 这是否意味着如果服务器上的实体使用了延迟获取,则返回的实体代理将具有with()中指定的所有请求对象?实例化对象服务器端的整个对象图,只向客户端发送一小部分,这似乎有点奇怪 问题2: 带(“foo”)的需求,带(“foo”);使用“foo”执行与请求相同的

我不太清楚
GWT
RequestFactory
Request
及其()实现的细节。请看这里

问题1:

查询服务器时,RequestFactory不会自动 填充对象图中的关系。要执行此操作,请使用with() 方法,并将相关属性名称指定为字符串

这是否意味着如果服务器上的
实体
使用了
延迟获取
,则返回的
实体代理
将具有with()中指定的所有请求对象?实例化对象服务器端的整个对象图,只向客户端发送一小部分,这似乎有点奇怪

问题2:

带(“foo”)的需求,带(“foo”);使用“foo”执行与请求相同的操作

问题3:

带(“foo”)、带(“bar”)的需求;使用“foo”、“bar”执行与请求相同的操作

注意:我很难在源代码中找到with()的实现细节,而问题1:

这可能取决于您的服务器端实现。 调用
with
只能确保在
RF
调用返回到客户端之前不久调用了相应的getter(
getFoo()

这就是为什么您还必须确保使用
OpenSessionInView
模式的原因,否则您可能会遇到
NullPointeterException
s

问题2:

我猜
请求
实现了一个构建器模式。 最终结果将是一样的。 但是,我不确定是否会调用两次
getter()
,或者
with
方法是否会检查是否已经请求了getter

问题3:

是的,是一样的

作为旁注。您可以使用
req.with(“foo.bar”)

在后端,这将导致一个<代码> GETFoE().GETBAR()/<代码>调用.< /p>关于第一个问题,考虑后端运行NoSQL数据库没有紧急加载设施的情况,例如:MunGDB。可以很容易地将对象图存储在那里,并在java对象中快速获得完整的图。如果客户端(通过代理)请求该对象而不进行任何with()调用,那么客户端是否会有完整的对象图?如果理解正确的话,这是因为不需要额外的getter来填充对象图?似乎没有@Ümit:对于Q2和Q3,答案是肯定的,并且属性引用是一个
Set
,因此不可能有重复的(也不可能重复调用服务器端的getter)@GWT4Ever:RF不关心域对象的行为,它只看到它的getter和setter。如果代理的getter类型是另一个代理,则需要使用
with()
在客户端获取属性;您的基础字段(或任何内容)是否已经填充或延迟填充并不重要。