首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

什么是悲观锁跟乐观锁

2013-11-09 
什么是悲观锁和乐观锁悲观锁:认为在修改数据库数据的这段时间里存在着也想修改此数据的事务!乐观锁:认为在

什么是悲观锁和乐观锁
悲观锁:认为在修改数据库数据的这段时间里存在着也想修改此数据的事务!
乐观锁:认为在短暂的时间里不会有事务来修改此数据库的数据!

悲观锁:
基于jdbc实现的数据库加锁如下:
     select * from account where name="Erica" for update.在更新的过程中,数据库处于加锁状态,任何其他的针对本条数据的操作都将被延迟。本次事务提交后解锁。
hibernate悲观锁的具体实现如下:
     String sql="查询语句";
     Query query=session.createQuery(sql);
     query.setLockMode("对象",LockModel.UPGRADE);

     说到这里,就提到了hiernate的加锁模式:
     LockMode.NONE : 无锁机制。
     LockMode.WRITE :Hibernate在Insert和Update记录的时候会自动获取。
     LockMode.READ : Hibernate在读取记录的时候会自动获取。
     这三种加锁模式是供hibernate内部使用的,与数据库加锁无关
     LockMode.UPGRADE:利用数据库的for update字句加锁。

乐观锁:
最常用的方法就是在数据库中加入一个VERSON栏记录,在读取数据时连同版本号一同读取,并在更新数据时递增版本号,然后比对版本号与数据库中的版本号,如果大于数据库中的版本号则予以更新,否则就回报错误。

1 楼 greatghoul 2009-12-22   乐观锁好麻烦呀。 2 楼 bence 2010-01-29   问下在项目中一般是用乐观锁还是用悲观锁?

热点排行