我正在寻找将更新同步到持久对象的单个实例的想法。
一个简单的域对象:
public class Employee {
long id;
String phone;
String address;
}
假设两个UI实例拉出了Employee(1),其中id = 1。第一个客户端编辑Employee(1)的phone属性;第二个客户端编辑Employee(1)的地址属性。当他们提交更改时,都需要保留。
一种可能的解决方案是为每个属性创建一个更新函数:
public void updatePhone(Employee employee) {
// right now I am synchronizing _employeeUpdateLock
// synchronize instance of Employee won't work
synchronized( something ) {
// update phone
}
}
// a similar function for address
遗憾的是,这种方法不能很好地扩展。 API需要不断地与属性对齐。注意
public void update(Employee employee) { ... }
将无效,因为该函数无法判断客户端打算更改哪个属性,除非可以在更新函数中提取原始对象的副本。
Hibernate提供了一种将行锁定到数据库的机制。这也不能很好地扩展。
也许解决方案取决于预期修改行的频率。对于低频修改,同步和锁定都很好。对于高频率修改,可以使用检索时行的副本来确定更新的属性。
我希望找到一个更好的范例来解决这个问题。感谢。
答案 0 :(得分:0)
我真的不明白你想要的架构。几个客户端共享同一数据对象的一个实例?这怎么可能 - 没有使用某种远程对象模型(现在被认为是坏事)?