Hibernate的锁机制

原创 2005年06月01日 15:21:00

Hibernate 的锁机制:

悲观锁(Pessimistic Locking):

       悲观锁往往通过数据库机制来实现,适合于安全性要求高并发不高的系统,具有绝对的排它性。在Hibernate中的方式较多,但是都是最终实现的结果就是在组装后的SQL语句的尾部追加“for update”或者“for update nowait(oracle数据库特有)”。注意:只有在查询开始之前(也就是Hiberate 生成SQL 之前)设定加锁,才会真正通过数据库的锁机制进行加锁处理,否则,数据已经通过不包含for update子句的Select SQL加载进来,所谓数据库加锁也就无从谈起。

      

乐观锁(Optimistic Locking):

       乐观锁通过Hibernate自身的机制来实现,适合于并发高的系统,可能通过其它的系统或者直接修改数据库破坏数据。有多种实现方式,其中官方推荐的是version,因为它是目前唯一数据对象脱离session发生改变的情况下依然有效的锁机制。通过在数据库中增加version字段,一般为Integer型,同时在hbm文件中增加以下“红色文字”的部分。通过在读取数据和提交修改时读取和比较version字段的值,来决定提交的数据是否是脏数据,是否将修改更新到数据库中。注意:version 节点必须出现在id节点之后。

<hibernate-mapping>

<class

name="org.hibernate.sample.TUser"

table="t_user"

dynamic-update="true"

dynamic-insert="true"

optimistic-lock="version"

>

<id

name="id"

column="id"

type="java.lang.Integer"

>

<generator class="native">

</generator>

</id>

<version

column="version"

name="version"

type="java.lang.Integer"

/>

……

</class>

</hibernate-mapping>

 

Hibernate锁机制的简单理解

我们知道事务并发会引发一些问题,一个典型的例子就是银行存取款的问题: 比如一个账户,用户A和B同时对它操作。假设账户里有1000元,A要往里存100元,而B要取100元, 假设这两个事务同...
  • z69183787
  • z69183787
  • 2014年04月02日 19:22
  • 646

hibernate4性能之并发和锁机制

数据库事务的定义 数据库事务(Database Transaction),是指作为单个逻辑工作单元执行的一系列操作。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性...
  • crazyitlhs
  • crazyitlhs
  • 2015年10月27日 12:01
  • 3669

Hibernate 锁机制

业务逻辑的实现过程中,往往需要保证数据访问的排他性。因此,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的“锁”,即给我们选定的目标数据上锁,使其无...
  • Ethan_Fu
  • Ethan_Fu
  • 2015年06月16日 08:31
  • 286

hibernate锁机制

Hibernate支持两种锁机制: 即通常所说的“悲观锁(Pessimistic Locking)”和 “乐观锁(OptimisticLocking)”。 悲观锁的实现,往往依靠数据库提供的锁机...
  • u012815721
  • u012815721
  • 2014年04月11日 15:57
  • 439

JPA Hibernate 和数据库 的 锁机制

本文总结Java中有关数据库保存持久数据的锁机制,不只是纯粹数据库自身的锁,本文主要就Java持久层三个技术数据库、JPA和Hibernate的锁应用进行了总结。   在并发理论中,锁是用于保护...
  • bigtree_3721
  • bigtree_3721
  • 2016年02月24日 22:00
  • 1141

Hibernate锁机制

业务实现过程中,难免需要保证数据访问的排他性。如金融系统的日终结算中,我们会针对某个截止点的数据进行处理,在此同时,不希望在结算的这段时间里(几秒钟或者几个钟头),数据再有变动,不然我们的统计也无效了...
  • u012373523
  • u012373523
  • 2014年01月01日 21:59
  • 420

Hibernate的锁机制

学了两天的hibernate锁机制,今天写个总结。Hibernate锁机制包括悲观锁和乐观锁。 1.悲观锁 它指的是对数据被外界修改持保守态度。假定任何时刻存取数据时,都可能有另一个客户也正在存取...
  • pq258280920
  • pq258280920
  • 2014年01月20日 14:28
  • 312

分布式锁机制

前言:       由于在平时的工作中,线上服务器是分布式多台部署的,经常会面临解决分布式场景下数据一致性的问题,那么就要利用分布式锁来解决这些问题。所以自己结合实际工作中的一些经验和网上看到的一些...
  • a408308321
  • a408308321
  • 2016年09月06日 18:07
  • 790

hibernate的锁机制

 开源技术:hiernate的锁机制hibernate锁机制包括悲观锁和乐观锁1.悲观锁:它指的是对数据被外界修改持保守态度。假定任何时刻存取数据时,都可能有另一个客户也正在存取同一笔数据,为了保持数...
  • Peter_K
  • Peter_K
  • 2007年03月15日 23:35
  • 2120

Hibernate的锁机制-总结

学了两天的hibernate锁机制,今天写个总结。Hibernate锁机制包括悲观锁和乐观锁。1.悲观锁它指的是对数据被外界修改持保守态度。假定任何时刻存取数据时,都可能有另一个客户也正在存取同一笔数...
  • jiyanle
  • jiyanle
  • 2015年04月23日 21:50
  • 227
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hibernate的锁机制
举报原因:
原因补充:

(最多只允许输入30个字)