我是第一次写GWT-Application
,需要你的建议。我为数据库实体实现定位器没有问题,我可以重用用于休眠乐观锁定的版本列,但我的一个实体代表一个ldap-Object
. 你能告诉我getVersion()
Locator 的方法是做什么用的,以及我如何实现这个方法,我ldap-Object?
将读写 ldap 对象。
2 回答
从GWT 文档中,getVersion
方法是
RequestFactory 使用它来推断实体是否已更改。后备存储(JDO、JPA 等)负责在每次持久化对象时更新版本,并且 RequestFactory 调用 getVersion() 以了解更改。此信息用于两个地方。首先,如果实体因服务器上的方法调用而发生更改,则 RequestFactoryServlet 向客户端发送 UPDATE 事件,例如,当调用持久化可编辑实体导致服务器上的版本更新时。其次,客户端维护最近看到的实体的版本缓存。每当它看到版本已更改的实体时,它就会在事件总线上触发 UPDATE 事件,以便侦听器可以更新视图。
由于许多持久性框架提供了通用的查找/获取/查询方法,因此也可以创建一个通用的 Locator 类并在 @ProxyFor 注释中为每个实体类型指定它。为此,您的所有实体都可以扩展一个提供 getId() 和 getVersion() 的基类。或者,通用定位器可以在需要时使用反射来调用 getId() 和 getVersion()。
不确定您是否正在寻找除此之外的其他任何东西。
我也有同样的问题。我的第一个想法是使用属性 modifyTimestamp 和 createTimestamp。但是仍然存在功能上的差距:这些时间戳的最小单位是秒,因此无法检测到同一秒内的变化。另一种解决方案是对 ldap 对象的所有属性使用一种校验和。不大好..