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