0

inRequest的 with() 实现的细节对我来说有点不清楚。有关官方文档,请参见此处。RequestFactoryGWT

问题一:

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

这是否意味着如果Entity在服务器上使用Lazy Fetching,返回的EntityProxy将具有 with() 中指定的所有请求的对象?实例化对象服务器端的整个对象图似乎有点奇怪,只向客户端发送一小部分。

问题2:

是否 req.with("foo").with("foo"); 做同样的事情 req.with("foo"); ?

问题 3:

req.with("foo").with("bar"); 做同样的事情 req.with("foo","bar"); ?

注意:我很难在源代码中找到 with() 的实现细节,API也对我没有帮助。

4

1 回答 1

1

问题一:

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

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

问题2:

我想Request<T>实现了一个构建器模式。最终结果将是相同的。但是我不确定是否getter()会调用两次,或者该with方法是否会检查 getter 是否已被请求。

问题 3:

是的,它是一样的。

作为旁注。您可以使用req.with("foo.bar"). 在后端,这将导致getFoo().getBar()调用。

于 2013-08-28T16:34:47.767 回答