Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate GWT请求工厂值代理关系_Hibernate_Gwt_Orm_Requestfactory - Fatal编程技术网

Hibernate GWT请求工厂值代理关系

Hibernate GWT请求工厂值代理关系,hibernate,gwt,orm,requestfactory,Hibernate,Gwt,Orm,Requestfactory,假设我有一个数据库,类型为a和BA是一个EntityProxy,它包含B的列表,而B是一个ValueProxy。我使用GWT的RequestFactory按id查询A。当我使用RequestFactory查询A时,我可以访问B列表,如下所示:A.getB(),因为B是一个“值代理” 问题:B列表是在我查询A时实际查询并下载到客户端的,还是仅在我调用getB()时才查询并下载到客户端的?没有延迟加载:如果你只要求A(因为你没有在请求中使用.with(“B”)),你要求“A with Bs”,你会得

假设我有一个数据库,类型为
a
B
A
是一个
EntityProxy
,它包含
B
的列表,而
B
是一个
ValueProxy
。我使用GWT的RequestFactory按id查询
A
。当我使用RequestFactory查询
A
时,我可以访问
B
列表,如下所示:
A.getB()
,因为
B
是一个“值代理”


问题:
B
列表是在我查询
A
时实际查询并下载到客户端的,还是仅在我调用
getB()
时才查询并下载到客户端的?

没有延迟加载:如果你只要求A(因为你没有在
请求中使用
.with(“B”)
),你要求“A with Bs”,你会得到“A with Bs”,你只会得到A,以后你必须要B

将其视为最不出人意料的原则

请注意,从数据库获取Bs(您用Hibernate、JPA和ORM标记了问题,所以…)是另一回事。这取决于您如何管理EntityManager会话和JPA实体的生命周期。很可能是从数据库加载Bs,即使它们没有被发送到客户端。

使用(字符串)
是否同时使用值代理和实体代理?在我看来,谷歌的文档并不清楚为什么你要使用值代理而不是实体代理。
.with()
仅用于实体代理。根据定义,ValueProxy没有标识,因此仅传输其中的一部分将意味着丢失一些数据(因此所有数据都会被发送)。使用EntityProxy,您可以在不同的时间点从同一个实体请求不同的字段(因为它是可识别的)(显然,如果在同一时间更新了该实体,它们可能来自该实体的不同版本)。只有EntityProxy可以部分加载,对于实体,只有不同的更改才能从客户端发送到服务器。