首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户机-服务器应用程序的JPA悲观锁逻辑

客户机-服务器应用程序的JPA悲观锁逻辑
EN

Stack Overflow用户
提问于 2019-07-04 20:34:41
回答 1查看 190关注 0票数 0

我正在学习JPA悲观的锁。我找到了以下解释

PESSIMISTIC_READ -实体被锁定在数据库上,阻止任何其他事务获取PESSIMISTIC_WRITE锁。 PESSIMISTIC_WRITE -该实体被锁定在数据库上,防止任何其他事务获取PESSIMISTIC_READ或PESSIMISTIC_WRITE锁。

如果我正确理解,那么如果我们有三个用户(A,B,C)和用户A获得读锁,那么用户B也可以获得读锁,但是用户C不能获得写锁,直到用户A和B释放他们的锁。如果用户A获得了写锁,那么在用户A释放锁之前,用户B和用户C无法获得任何信息。

但是,对于我的客户机-服务器应用程序,我需要以下逻辑。如果用户只想读取一个实体,他们就以只读模式打开该实体(无限数量的用户可以同时这样做)。如果某个用户想编辑实体,他会以写模式打开它--没有人可以在写模式下打开同一个实体(直到用户释放写锁为止),但所有其他用户仍然可以以只读模式打开该实体。

我有两个问题:

  1. 我对JPA悲观锁的理解对吗?
  2. 是否有可能让JPA执行我需要的逻辑(使用JPA锁定机制)?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-04 22:08:37

我对JPA悲观锁的理解对吗?

是的,这正是读写锁的工作方式

...but所有其他的仍然可以以只读模式打开实体。

我不太明白你的意思。我们仍然在讨论多个同时执行的事务,对吗(我有一种奇怪的感觉,这不是您的意思)?如果是这样的话,那么在您的逻辑中,持有'READ_ONLY‘锁就什么都没有。

锁定意味着‘我冻结了这个资源,以便某些其他事务在我完成之前不能继续’。但是,在您描述的逻辑中,当您持有'READ_ONLY‘锁时,既允许持有'READ_ONLY’锁的事务,也允许持有'WRITE‘锁的事务继续进行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56893973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档