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

Hibernate LockMode释放,如果无法获取锁,则快速失败

融烨华
2023-03-14

关于Hibernate 3.3.2.ga中提供的悲观锁定模式,我有两个问题:

>

  • 如果我使用锁定模式升级锁定一组行,当您移出事务范围时,锁是否会释放?如果是,我们可以跨事务锁定解锁吗?

    对于以下场景,哪个锁定模式将是有用的

    > < li>

    线程1尝试获取锁并锁定一组行

    线程2尝试获取同一组行的锁(线程1锁定了这些行),此时线程2得到一个异常,表明行被锁定

    哪个是最好的悲观锁定模式?

  • 共有1个答案

    袁运良
    2023-03-14

    > < li>

    锁定模式。升级使用<代码>选择...for update,因此锁在当前事务的整个持续时间内保持不变。释放锁的唯一方法是提交或回滚事务。

    一个选择...对于更新锁定将导致第二个事务等待第一个事务释放锁。如果要快速失败,则需要使用:UPGRADE_NOWAIT,它将使用选择...对于更新无等待查询,如果无法获取锁,则会引发异常(Oracle 和 PostgreSQL 支持此功能)。

    或者,您可以使用Hibernate锁定选项,如下所示:

    entityManager
    .unwrap(Session.class)
    .buildLockRequest(
        new LockOptions(LockMode.PESSIMISTIC_WRITE)
        .setTimeOut(LockOptions.NO_WAIT))
    .lock(entity);
    

    有关更多详细信息,请查看我在苏黎世沃克斯戴斯的事务和并发控制演示文稿。

     类似资料:
    • 主要内容:1 acquireShared共享式获取锁,1.1 tryAcquireShared尝试获取共享锁,1.2 doAcquireShared自旋获取共享锁,2 reaseShared共享式释放锁,3 acquireSharedInterruptibly共享式可中断获取锁,3.1 doAcquireSharedInterruptibly共享式可中断获取锁,4 tryAcquireSharedNanos共享式超时获取锁,,,,,,详细介绍了AQS中的同步状态的共享式获取、释放的原理,以及独占

    • 问题内容: 我一直在尝试制作Angular2的快速入门指南。我按照快速指南中的说明进行了操作。但是,当我运行它时,它显示以下消息“无法获取”。有人知道为什么会这样吗? boot.js文件 app.component.js文件 索引文件 最后,package.json文件 我运行“ npm start”行,该行打开浏览器并显示“无法获取” 问题答案: 我弄清楚了问题所在。我的html文件中有多余的空

    • 我有一个Spring Boot应用程序,其中包含一些集成测试,用于检查数据库中数据的前端操作结果。 该应用程序在spring-data-jpa和spring-data-rest下方使用DataNcore us JPA,并带有内存数据库,例如Derby,通过Spring Boot测试自动设置。 我以前用Hibernate,但我用它来替换DataNucleus。测试都通过了Hibernate,但现在我

    • SQLite具有不同级别的锁:、、、、。 我找不到调用SQLite API获取和释放锁定的信息。 据我所知,调用sqlite3\U步骤时获得锁。锁的类型取决于预处理语句的表达式。此外,此命令还可以升级自定义事务内的锁定写入操作。 据我所知,写入锁也是由sqlite3\u步骤释放的-此函数返回SQLITE\u DONE或错误代码。我没有找到任何文档,但该函数应该在执行结束时释放保留的待处理的独占的。

    • 问题内容: 我如何获得本地IpAddress? 当我使用该功能时,我将无法再继续使用。我不能使用该功能。 是否有其他方法可以执行此操作,或者我是否以错误的方式进行操作? 问题答案: 在讨论中发现,OP需要Mac上的接口地址,而不是我最初想的那样在iOS设备上。问题中引用的代码将检查接口名称“en0”,它是iPhone上的WiFi接口。在Mac上,改为检查任何“正在运行”的界面更有意义。因此,我重写

    • 主要内容:1 同步队列的结构,2 锁的获取与释放,3 acquire独占式获取锁,3.1 tryAcquire尝试获取独占锁,3.2 addWaiter加入到同步队列,3.3 acquireQueued结点自旋获取锁,3.4 selfInterrupt自我中断,4 release独占式锁释放,4.1 unparkSuccessor唤醒后继结点,5 acquirelnterruptibly独占式可中断获取锁,,,,,,,,,详细介绍了AQS中的同步队列以及同步状态的独占式获取、释放的原理。 1 同