Hibernate 悲观锁和乐观锁

mac2022-06-30  66

悲观锁:认为在修改数据库数据的这段时间里存在着也想修改此数据的事务! 乐观锁:认为在短暂的时间里不会有事务来修改此数据库的数据! 悲观锁: 基于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栏记录,在读取数据时连同版本号一同读取,并在更新数据时递增版本号,然后比对版本号与数据库中的版本号,如果大于数据库中的版本号则予以更新,否则就回报错误。

转载于:https://www.cnblogs.com/J2EEPLUS/archive/2012/04/27/2488139.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)