我遇到了一些代码,在删除它之前立即在实体上设置了读锁定。我仍然在努力掌握锁定概念,所以也许我在这里遗漏了一些东西,但我认为没有任何好处。我的理解是READ锁会在提交事务之前检查版本是否没有更改,但是在删除实体之前阻止更改对我来说似乎毫无意义。
在删除实体之前锁定实体会添加任何利益/安全措施吗?
这一点很常见吗?
代码看起来像这样......
服务层:
getDAO().readLock(entity);
getDAO().delete(entity);
用于锁定的DAO图层:
//Code Specifies LockModeType.READ
T mergedObject = getEntityManager().merge(object);
manager.lock(mergedObject, lockMode);
//
用于删除的DAO图层:
T mergedObject = getEntityManager().merge(object);
getEntityManager().remove(mergedObject);
持久性提供程序是休眠的。
答案 0 :(得分:0)
它确保在版本检查和删除之间不会在外部更改实体。
为了防止这样的情况: