这三个问题有点困扰:
1)我看到diff是用AutoBeanUtils's diff
方法计算的。我在实体中看到了一个名为parentObject
的标签,用于比较以计算差异。
parent = proxyBean.getTag(Constants.PARENT_OBJECT);
课程中的 AbstractRequestContext
。
这是否意味着加载到浏览器的给定实体有两个副本?如果我的实体实际大小是1kb,那么加载的实际数据将是2kb(因为实体的两个副本被加载到浏览器上)?
2)在服务器端:
假设我必须从数据库中获取实体,static find<EntityName>
应该是这样我每次都必须进行数据库调用,或者有没有办法可以微调这种行为? [抱歉,我不太了解locator
概念。]
3)当从客户端发送差异时,如果服务器端出现崩溃(由于任何不需要当前请求的原因),会发生什么?
非常感谢。
答案 0 :(得分:1)
当您.edit()
代理时,它会复制并存储您作为参数传递的不可变代理,作为返回代理的PARENT_OBJECT
。
你每次调用这个方法时都会调用一次数据库调用(Locator
的{{1}}方法也是如此),这个方法不会超过两次每个请求。如果需要,您可以使用某种缓存,但如果您使用JPA或JDO,则会为您处理(您必须使用每个请求的会话模式,即OpenSessionInView)
如果在解码请求时出现任何错误,将返回全局错误,该错误将传递给失败的所有find()
的{{1}} onFailure
请求。
请参阅https://code.google.com/p/google-web-toolkit/wiki/RequestFactoryMovingParts#Flow