当前位置: 首页 > 知识库问答 >
问题:

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

熊烨
2023-03-14

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

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

如果我理解对的话,那么如果我们有三个用户(A,B,C),用户A获得读锁,那么用户B也可以获得读锁,但是用户C不能获得写锁,直到用户A和B释放他们的锁。如果用户A获得写锁,那么用户B和用户C在用户A释放锁之前什么也得不到。

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

共有1个答案

袁骏祥
2023-03-14

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

是的,这正是读/写锁定的工作原理

...但所有其他人仍可以以只读模式打开该实体

 类似资料:
  • 我正在使用Spring Boot、JPA、Oracle 12C和下面的类型化查询来选择要处理的“新”项目。一旦我选择了“新”项目,我就会更新其状态,使其不再符合选择条件,但我看到一个并发问题,相同的项目被选中。 我在这里读到,我需要设置一个'LockModeType.PESSIMISTIC_WRITE'的查询,以防止其他线程选择相同的行,但它似乎不起作用。 我是否遗漏了下面的内容,或者我是否需要另

  • 问题内容: 我正在尝试以客户端/服务器方式制作Java应用程序。客户端是SWT中的GUI,它显示来自服务器的数据。服务器已连接到数据库。 好的,对此感到抱歉,我确定这是一个经典问题,但我不知道如何开始。 在我为他们工作的一个项目中,他们实施了很多魔术来透明地调用Glassfish服务器。 我不想使用Glassfish服务器。我只想要简单的Java语言。但是代理的概念似乎很酷。 你有这种想法或例子吗

  • 我正在试用一个简单的示例。我能够运行服务器应用程序和客户端应用程序来彼此通信。我现在需要了解一个教程,说明两个客户机如何通过服务器相互通信。 我怎么能这么做?有人能给我指出一个好的教程或者解释如何在Java中实现这一点吗

  • 我正在编写一个客户机-服务器应用程序,但在使用命令模式时遇到了问题。在我的程序中,服务器从客户端接收字符串输入命令,在HashMap中为输入找到合适的命令,执行它并返回返回值。我在弄清楚如何编写需要不止一步的命令时遇到了问题(命令必须要求客户机提供额外的参数,然后应该返回最终结果)。 命令界面 服务器与客户端的通信 一步到位,毫无问题 我不知道如何编写一个命令,它需要一个额外的参数来执行,它不能在

  • 问题内容: 我正在尝试使用我一直在努力的客户端/服务器程序实现多线程。我需要允许多个客户端同时连接到服务器。我目前有4类:客户端,服务器,协议和用于处理线程的工作器。以下代码是我对这些类的拥有的代码: SocketServer类: SocketClient类别: 协议类别: ClientWorker类: 当我运行服务器和客户端时,一切正常。然后,当我尝试运行另一个客户端时,它只是挂在那儿,没有提示

  • 悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作 乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。 乐观锁与悲观锁的具体区别: http://www.cnblogs.com/Bob-FD/p/3352216.html