【问题标题】:Spring Hibernate Pessimistic lockingSpring Hibernate悲观锁定
【发布时间】:2014-08-30 10:44:23
【问题描述】:

我的应用程序中的某些实体需要在某个事务的范围内被锁定。 我需要锁定参与事务的所有实体,并且不想创建特殊方法来锁定我的 DAO 上的实体。 我正在使用 spring 的声明性事务并为该特定方法调用设置隔离级别,但是当获取数据时生成的 SQL 查询是正常的 SELECT 而不是 SELECT XXX FOR UPDATE。 我是否必须在休眠时的事务中手动指定每个参与实体的锁定? 这不应该从事务隔离中控制吗? 在休眠的会话上将锁定模式设置为 UPDATE 时,我可以看到正确的查询,这是否意味着即使我已经指定了隔离,我也需要手动指定锁定。

最好的

【问题讨论】:

  • 所以这要么是一个非常棘手的问题,要么是非常深刻的! :D

标签: java spring hibernate jpa spring-transactions


【解决方案1】:

是的。隔离级别和锁定是不同的东西,并且肯定不会从事务隔离中控制锁定。另外,我建议您不要使用隔离级别,除非您有充分的理由。

您应该在查询时使用悲观锁定以对选定实体应用 SELECT ... FOR UPDATE。

这对你有帮助

Spring Pessimistic locking

【讨论】:

    猜你喜欢
    • 2018-10-22
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多