JPA-悲观锁-锁存在时会发生什么?

吉尔伯特·阿里纳斯匕首

背景信息:我遇到一个问题,即没有进行实体更新。查看我的日志,我可以看到我期望的更新sql语句,但是它们几乎是同时发生的(相距0.012秒),并且应用程序在更新实体时使用悲观的读取锁。

这引出我的问题:存在悲观锁时的预期行为是什么?我还应该期望看到多个更新查询吗?我应该期望抛出PessimisticLockException,对吗?我还应该寻找其他指标吗?

Hibernate是我的JPA实现。

安德烈一世

悲观锁实际上是使用SQL查询传播到数据库级别的(检查执行的查询进行比较)。如果存在悲观锁,则应用程序应等待数据库,直到释放该锁为止,因此不是强制性抛出异常(但可以)。

现在来谈谈例外情况:

/*
PessimisticLockException if pessimistic locking fails and the transaction is rolled back
LockTimeoutException if pessimistic locking fails and only the statement is rolled back
*/
public <T> T find(Class<T> entityClass, Object primaryKey, LockModeType lockMode);

对于其他EntityManager方法,在类似情况下会抛出这两个异常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JPA悲观锁尝试永远不会超时

来自分类Dev

学说悲观锁

来自分类Dev

确保释放悲观锁

来自分类Dev

使用悲观锁时的Eclipse死锁

来自分类Dev

使用JPA的表互斥锁

来自分类Dev

JPA乐观锁(READ)的说明

来自分类Dev

如果Python线程在获取锁后死亡,会发生什么?

来自分类Dev

然后如何无限期地持有悲观锁,以便跟踪集群中的主节点?

来自分类Dev

然后如何无限期地持有悲观锁,以便跟踪集群中的主节点?

来自分类Dev

如果获取互斥锁之后发生中断,会发生什么情况

来自分类Dev

等待条件变量的线程持有的互斥锁会发生什么情况

来自分类Dev

如果线程试图获取它已经持有的锁,会发生什么?

来自分类Dev

锁为什么不锁?

来自分类Dev

为什么我对Oracle的JPA中的悲观锁定无法正常工作

来自分类Dev

JPA锁和数据库隔离级别

来自分类Dev

为什么互斥锁不需要互斥锁(而该互斥锁则需要互斥锁...)

来自分类Dev

为什么在这种锁实现中存在防护措施?

来自分类Dev

(术语)“竞争”锁与“满足”锁

来自分类Dev

锁桌面+锁屏壁纸?

来自分类Dev

为什么要私人锁

来自分类Dev

为什么要私人锁

来自分类Dev

.~锁是什么。文件的前缀?

来自分类Dev

无锁和无锁之间有什么区别?

来自分类Dev

为什么条件变量需要锁(因此也需要互斥锁)

来自分类Dev

暂停时会发生什么?

来自分类Dev

发出等待条件变量的信号后,线程何时会获取锁?是什么决定的?

来自分类Dev

为什么隐式锁没有发生死锁?

来自分类Dev

什么是“打雷群”问题,即使使用了自旋锁,种族状况又如何发生?

来自分类Dev

术语问题:互斥锁,自旋锁,可睡眠锁

Related 相关文章

热门标签

归档