`
hyperprice
  • 浏览: 50880 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

乐观锁

阅读更多
理解:用户可以做查询等操作,但修改数据时需要验证version版本号,如果版本号错误则会抛出异常(只有在2个或多个线程同时做操作时才会做验证version,单线程修改不会验证version只会增加version。)


实现方法:在数据库中(或类对象中)创建version(为int类型),然后在映射(hbm)文件中增加
optimistic-lock="version" 属性。
然后在配置中增加<version name="version"></version>属性,要放在id下面。

配置hbm例子代码如下:

<hibernate-mapping>
<class name="com.rydl.HappyLock.HLock" table="t_hlock" optimistic-lock="version">
<id name="id">
<generator class="native"/>
</id>
<version name="version"></version>
<property name="mobile"/>
</class>
</hibernate-mapping>


优缺点:多用户多线程可以访问数据库(悲观锁不能做访问),多线程同时做修改时会验证version,减少服务器负荷,乐观锁不受数据库的机制影响,它是受代码控制的
分享到:
评论

相关推荐

    thinkPHP框架乐观锁和悲观锁实例分析

    在ThinkPHP框架中,常见的有乐观锁和悲观锁两种机制。本文将通过实例分析这两种锁在ThinkPHP框架中的应用,以及它们各自的优缺点。 首先,让我们从乐观锁开始了解。乐观锁机制假设多个事务在处理数据时很少发生冲突...

    SpringBoot mybatis 乐观锁重试机制代码实现

    SpringBoot mybatis 乐观锁重试机制代码实现 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。...

    乐观锁version-练习

    乐观锁是一种并发控制策略,主要用于多用户环境下的数据一致性维护,尤其在大数据量但并发冲突较少的情况下更为适用。与悲观锁相比,乐观锁假设在大多数情况下不会发生数据冲突,因此在读取数据时不会加锁,只有在...

    node+js页面乐观锁帧同步示例源码

    在IT行业中,乐观锁是一种重要的并发控制策略,用于管理共享资源。它假设大多数情况下不会发生数据冲突,因此在读取数据时不会立即进行锁定。只有在更新数据时才会检查在此期间是否有其他事务对数据进行了修改。如果...

    Hibernate乐观锁和悲观锁分析

    【Hibernate乐观锁与悲观锁详解】 在开发过程中,尤其是在并发环境下,确保数据的一致性和完整性至关重要。Hibernate,作为Java领域广泛使用的ORM框架,提供了一种处理并发数据访问冲突的手段,那就是锁机制。主要...

    乐观锁测试代码

    乐观锁是一种并发控制策略,它假设大多数情况下读多写少,因此在读取数据时不会进行加锁操作,而是尽可能地让多个事务并发执行。只有在更新数据时才会检查在此期间是否有其他事务对数据进行了修改,如果有,则更新...

    吊打面试官之乐观锁实现源码

    乐观锁是一种并发控制策略,与悲观锁相比,它在处理多线程并发时更为乐观,认为数据在大多数情况下不会发生冲突,因此不会像悲观锁那样在读取数据时立即进行加锁操作。在本篇文章中,我们将深入探讨乐观锁的概念、...

    Hibernate的乐观锁与悲观锁

    ### Hibernate的乐观锁与悲观锁 #### 一、引言 在并发环境下,尤其是在金融、电商等业务场景中,确保数据的一致性和完整性至关重要。**Hibernate**作为一种流行的Java持久层框架,提供了多种机制来处理并发控制...

    数据库事务、hibernate悲观锁和乐观锁

    在Hibernate中,可以使用`@Version`注解来实现乐观锁,该注解会在实体类的一个属性上添加版本字段,每次更新时,Hibernate会比较当前版本号和数据库中的版本号,如果不同,则认为有并发冲突,更新失败。乐观锁的优点...

    hibernate乐观锁和悲观锁学习

    本文主要讨论的是Hibernate框架中两种锁机制的使用:乐观锁和悲观锁。 首先,让我们深入理解悲观锁(Pessimistic Locking)。悲观锁正如其名字所示,假设并发环境中数据会被频繁修改,所以在整个数据处理过程中,它...

    面试必备之乐观锁与悲观锁.pdf

    ### 面试必备之乐观锁与悲观锁详解 #### 一、悲观锁与乐观锁的概念 悲观锁和乐观锁是计算机科学中用于处理并发控制的两种不同策略,它们主要应用于多线程环境下数据的一致性和完整性保护。两种锁的设计哲学反映了...

    Mybatis-Plus中乐观锁@version注解的问题与解决方案.docx

    Mybatis-Plus 中乐观锁 @version 注解的问题与解决方案 Mybatis-Plus 是一个基于 Mybatis 的增强工具,它提供了许多实用的功能来简化数据库交互操作。在实际开发中,我们经常会遇到乐观锁的问题,特别是在使用 @...

    Java并发篇乐观锁,悲观锁,自旋锁

    1. **乐观锁**:乐观锁假设在多线程环境下,数据一般不会产生冲突,所以在读取数据时不会加锁,只有在更新数据时才会检查是否有其他线程同时修改了数据,若有冲突则回滚操作。通常通过版本号或时间戳实现。 2. **...

    悲观锁和乐观锁.md

    所谓乐观锁,重视假设最好的情况,每次去拿数据都认为别人不会修改,所以不会上锁,但是会在更新时判断一下在此期间这个数据有没有更改,使用版本号机制和CAS算法实现,乐观锁适用于多读的应用类型,这样可以提高...

    Redis分布式锁----乐观锁的实现,以秒杀系统为例.rar

    本文件“Redis分布式锁----乐观锁的实现,以秒杀系统为例”主要探讨了如何利用Redis实现乐观锁,并通过秒杀系统的实例进行详细阐述。 首先,我们需要理解什么是分布式锁。在分布式系统中,当多个节点同时访问同一...

    乐观锁与悲观锁

    介绍数据库事务的定义和事务带来的问题,详细讲解乐观锁与悲观锁的区别

    Java 中的悲观锁和乐观锁的实现

    ### Java中的悲观锁与乐观锁实现详解 #### 一、悲观锁(Pessimistic Locking) 悲观锁是一种基于对数据安全性的保守态度而设计的锁机制。它假设数据在处理过程中很可能被外界修改,因此在整个数据处理过程中都会将...

    Hibernate悲观锁和乐观锁的实现

    悲观锁和乐观锁是两种常见的锁定策略,它们各有特点,适用于不同的场景。 **悲观锁**(Pessimistic Lock)的名字来源于其悲观的态度,它认为数据随时可能被其他事务修改,因此在读取数据时就立即进行加锁,防止其他...

Global site tag (gtag.js) - Google Analytics