Spring Data JPA / Hibernate中锁的范围是什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Data JPA / Hibernate中锁的范围是什么?相关的知识,希望对你有一定的参考价值。

当使用Spring Data的JpaRepository时,如果findOneById(...)方法用@Lock(LockModeType.PESSIMISTIC_WRITE)(或任何其他)注释,那么锁的范围是什么,i。即它有多长时间了?只有在执行select查询时,或者直到事务结束?

P.S。:如果调用方法用@Transactional注释怎么办?

答案

从JPA 2.1规范(强调我的):

悲观锁定保证一旦事务获得对实体实例的悲观锁定:

  • 没有其他事务(使用Java Persistence API的应用程序的事务或使用底层资源的任何其他事务)可以成功修改或删除该实例,直到持有锁的事务结束。

由于这是Spring Data JPA使用的机制,因此锁定一直持续到事务结束。

以上是关于Spring Data JPA / Hibernate中锁的范围是什么?的主要内容,如果未能解决你的问题,请参考以下文章

spring-data-jpa 和 spring-boot-starter-data-jpa 的区别

spring-data详解之spring-data-jpa:简单三步快速上手spring-data-jpa开发

spring data jpa怎么和solr整合

spring data jpa问题

Spring Data 系列 Spring+JPA(spring-data-commons)

spring-data-jpa软删除方案