• 怎么实现hibernate悲观锁和乐观锁?


    隔离级别的安全控制是整体一个大的方面,而锁机制更加的灵活,它执行的粒度可以很小,可以在一个事务中存在。

    Hibernate悲观锁是依靠底层数据库的锁机制实现,在查询query.setLockMode(),

    hibernate的加锁模式有:

    LockMode.NONE :无锁机制。

    LockMode.WRITE :Hibernate在 Insert和 Update记录的时候会自动获取。

    LockMode.READ :Hibernate在读取记录的时候会自动获取。

    以上这三种锁机制一般由 Hibernate内部使用,如Hibernate为了保证 Update过程中对象不会被外界修改,会在 save 方法实现中自动为目标对象加上 WRITE锁。

    LockMode.UPGRADE :利用数据库的 for update 子句加锁。

    LockMode. UPGRADE_NOWAIT : Oracle的特定实现,利用 oracle的 for update nowait子句实现加锁。

    加锁方法实现:

    Criteria.setLockMode

    Query.setLockMode

    Session.lock

    悲观锁会带大量的性能开销。乐观锁是Hibernate在内存实现的,提供了3种实现:

    1.基于version:读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一

    2.基于timestamp:

    乐观锁只须在<hibernate-mapping>配置中配置

  • 相关阅读:
    构造函数+this关键字+super关键字
    封装
    数组+方法
    流程控制语句
    java运算符+引用数据类型
    java的基础安装
    mysql数据库连接
    mysql数据库约束
    mysql数据库
    练习010:按奇偶排序数组
  • 原文地址:https://www.cnblogs.com/huigee/p/9758294.html
Copyright © 2020-2023  润新知