Hibernate锁机制

Hibernate锁机制包括悲观锁和乐观锁。

1、悲观锁

   它指的是对数据被外界修改持保守态度。假定一个事务在对指定数据做操作时,都可能有另外一个事务同时在对当前数据做操作,为了保证对数据操作的完整性和一致性,于是采取了在数据库级别的锁定状态,依靠数据库提供的锁机制来实现。

select * from account where id =1 for update

 在查询的过程中,数据库处于锁定状态,任何其它的针对本条数据的操作都会被延迟,本次事务提交后解除锁定。

hibernate悲观锁实现如下:

String sql="查询语句";
Query query=session.createQuery(sql);
query.setLockMode("对象",LockModel.UPGRADE);

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

2、乐观锁

  乐观锁则乐观的认为当前事务所操作的数据很少被其它事务所操作,因为不做数据库层次上的锁定,为了维护数据的正确,乐观锁采用在应用程序使用版本控制的方法实现。

   实体类中增加version属性(数据库也会对应生成该字段,初始值为0),并在其get方法前加@Version注解,则在操作

过程中没更新一次该行数据则version值加1,即可在事务提交前判断该数据是否被其他事务修改过。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值