【发布时间】:2015-02-13 15:06:08
【问题描述】:
我遇到了一些代码,其中在删除实体之前立即在实体上设置了读取锁定。我仍在努力掌握锁定概念,所以也许我在这里遗漏了一些东西,但我认为这没有任何好处。我的理解是 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);
持久性提供程序处于休眠状态。
【问题讨论】:
标签: java hibernate jpa concurrency locking