美文网首页
JPA 中的悲观锁

JPA 中的悲观锁

作者: RJ_Hwang | 来源:发表于2019-06-19 20:58 被阅读0次

JPA 规范定义了 3 种类型的悲观锁:

  • PESSIMISTIC_READ – 允许获取共享锁并防止数据被更新或删除
  • PESSIMISTIC_WRITE – 允许获取独占锁,并防止读取、更新或删除数据
  • PESSIMISTIC_FORCE_INCREMENT – 类似于悲观 PESSIMISTIC_WRITE,额外增加了一个版本化实体的版本属性

都定义在 LockModeType 类内。

// find
entityManager.find(User.class, id, LockModeType.PESSIMISTIC_READ);

// query
entityManager.createQuery("from User where id = :id")
  .setParameter("id", id)
  .setLockMode(LockModeType.PESSIMISTIC_WRITE)
  .getResultList()

// named query
@NamedQuery(
  name="lockUser",
  query="select s from User s where s.id = :id",
  lockMode = PESSIMISTIC_READ
)

// Lock Scope
Map<String, Object> properties = new HashMap<>();
map.put("javax.persistence.lock.scope", PessimisticLockScope.EXTENDED);
entityManager.find(User.class, 1L, LockModeType.PESSIMISTIC_WRITE, properties);

// Setting Lock Timeout - milliseconds
Map<String, Object> properties = new HashMap<>(); 
map.put("javax.persistence.lock.timeout", 1000L); 
entityManager.find(User.class, 1L, LockModeType.PESSIMISTIC_READ, properties);

From Pessimistic Locking in JPA.
Last modified: May 26, 2019

相关文章

  • JPA 中的悲观锁

    JPA 规范定义了 3 种类型的悲观锁: PESSIMISTIC_READ – 允许获取共享锁并防止数据被更新或删...

  • 锁的概述

    乐观锁与悲观锁 悲观锁 乐观锁和悲观锁的概念出自数据库,但在java并发包中也引入和类似的概念(乐观锁/悲观锁是一...

  • 史上最全 Java 中各种锁的介绍

    锁的分类介绍 乐观锁与悲观锁 锁的一种宏观分类是乐观锁与悲观锁。乐观锁与悲观锁并不是特定的指哪个锁(Java 中也...

  • 史上最全 Java 中各种锁的介绍

    锁的分类介绍 乐观锁与悲观锁 锁的一种宏观分类是乐观锁与悲观锁。乐观锁与悲观锁并不是特定的指哪个锁(Java 中也...

  • 九、【Java 并发】锁的概述

    乐观锁 & 悲观锁 乐观锁和悲观锁是在数据库中引入的名词,但是在 Java 并发包锁里面也引入了类似的思想。 悲观...

  • rails中乐观锁和悲观锁的使用

    MySQL乐观锁和悲观锁的介绍可以参考之前的一篇文章MySQL中的锁(行锁,表锁,乐观锁,悲观锁,共享锁,排他锁)...

  • 一文简介乐观锁和悲观锁

    悲观锁和乐观锁的概念 乐观锁和悲观锁在面试过程中是经常遇到的,那么什么是乐观锁什么是悲观锁呢?首先需要明确的是乐观...

  • java中的乐观锁和悲观锁的区别?

    java中的乐观锁和悲观锁的区别?

  • es总结和思考2

    ES如何处理并发问题 其实这个问题问的是悲观锁和乐观锁,以及在ES中的应用 悲观锁 悲观锁就是只要操作就加锁(不太...

  • 乐观锁和悲观锁

    乐观锁和悲观锁悲观锁假设每次拿数据别人都会修改,所以是先取锁再访问,在数据库中的悲观锁是在对记录修改之前,先尝试为...

网友评论

      本文标题:JPA 中的悲观锁

      本文链接:https://www.haomeiwen.com/subject/lzylqctx.html