有 3 个用户登录了一个应用程序,例如 A、B、C。我已经实现了一个业务逻辑,如果用户 A 在数据库(比如员工对象)中保存一个对象(使用休眠),其他它将在员工表中标记为“重复”处理状态(每条记录都有一个处理状态,如成功、错误、重复)。我将保留员工对象的代码块放在同步块中。但我的问题是“当所有 3 个用户同时单击保存员工按钮时,3 个对象保存在 DB 中,同步块中的代码正在为所有 3 个用户串行执行,但它同时将对象保存在 DB 中,因为我我无法将记录标记为重复(在保存对象之前,我检查了处理状态)”。如果所有 3 个对象同时单击“保存员工”按钮,我想以一种方式保存对象,
我已经实现了如下代码
synchronized(this){
find processing state of each records.
if record is have success status mark as duplicate
else save the object in DB with status proccesing (by using hibernate)
save function is {
session().save(object) (hibernate session )
session().flush();
}
// do some other work
update the records status success
}// close the synchronized block
如果第一个用户成功保存记录。但我无法获得“成功用于其他用途”的记录状态
请帮忙
谢谢