我正在学习 JPA 悲观锁。我找到了以下解释
PESSIMISTIC_READ - 实体在数据库上被锁定,防止任何其他事务获取 PESSIMISTIC_WRITE 锁。
PESSIMISTIC_WRITE - 实体在数据库上被锁定,防止任何其他事务获取 PESSIMISTIC_READ 或 PESSIMISTIC_WRITE 锁。
如果我理解正确的话,那么如果我们有三个用户(A,B,C),用户A获得READ锁,那么用户B也可以获得READ锁,但是用户C无法获得WRITE锁,直到用户A和B释放他们的锁。如果用户 A 获得 WRITE 锁,那么在用户 A 释放锁之前,用户 B 和用户 C 什么也得不到。
但是,对于我的客户端-服务器应用程序,我需要以下逻辑。如果用户只想读取实体,则他们以只读模式打开实体(无限数量的用户可以同时进行)。如果某个用户想要编辑他在 WRITE 模式下打开它的实体 - 没有人可以在 WRITE 模式下打开同一个实体(直到用户释放 WRITE 锁)但所有其他人仍然可以在 READ-ONLY 模式下打开实体。
我有两个问题:
我对JPA悲观锁的理解对吗?
是否可以让 JPA 执行我需要的逻辑(使用 JPA 锁定机制)?
慕尼黑的夜晚无繁华
相关分类