首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    锁机制有什么用?简述Hibernate的悲观锁和乐观锁机制

    有些业务逻辑在执行过程中要求对数据进行排他性的访问,于是需要通过一些机制保证在此过程中数据被锁住不会被外界修改,这就是所谓的锁机制。 Hibernate支持悲观锁和乐观锁两种锁机制。悲观锁,顾名思义悲观的认为在数据处理过程中极有可能存在修改数据的并发事务(包括本系统的其他事务或来自外部系统的事务),于是将处理的数据设置为锁定状态。悲观锁必须依赖数据库本身的锁机制才能真正保证数据访问的排他性,关于数据库的锁机制和事务隔离级别在《Java面试题大全(上)》中已经讨论过了。乐观锁,顾名思义,对并发事务持乐观态度(认为对数据的并发操作不会经常性的发生),通过更加宽松的锁机制来解决由于悲观锁排他性的数据访问对系统性能造成的严重影响。最常见的乐观锁是通过数据版本标识来实现的,读取数据时获得数据的版本号,更新数据时将此版本号加1,然后和数据库表对应记录的当前版本号进行比较,如果提交的数据版本号大于数据库中此记录的当前版本号则更新数据,否则认为是过期数据无法更新。Hibernate中通过Session的get()和load()方法从数据库中加载对象时可以通过参数指定使用悲观锁;而乐观锁可以通过给实体类加整型的版本字段再通过XML或@Version注解进行配置。

    05

    关于使用MySQL innoDB引擎中事务和锁的信息记录表

    字段名 说明 id 一个标识 user 显示当前用户,如果不是root,这 个命令就只显示你权限范围内的sql语句。 host 显示这个语句是从哪个ip的哪个端口上发出的 db 显示 这个进程目前连接的数据库。 command 显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接 (connect)。 time 此这个状态持续的时间,单位是秒。 state 显示使用当前连接的sql语句的状态,只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting result,Sending data等状态才可以完成 info 显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。

    02

    学习Java基础知识,打通面试关~十二乐观锁与悲观锁

    在平常开发中,我们经常会用到多线程的开发,在使用多线程的时候,我们就需要注意线程安全的问题,特别是重要的操作共享变量时,线程安全的问题又是重中之重。我们今天就来了解一下锁中的乐观锁和悲观锁。 在面试中,如果是Java后天研发的工程师,很有可能会考到这一个知识点。所以今天也就来说下这个。 两者的概念 乐观锁 根据表面上来看每次去拿数据的时候认为别人都不会修改。所以不会上锁,有着更宽松的锁机制,减少了性能的开销。 在更新的时候会根据版本号进行判断是否有程序去修改这个数据,例如版本号等机制,使用版本号的机制在进行

    02
    领券