Hibernate悲观锁和乐观锁的兑现
Hibernate悲观锁和乐观锁的实现Hibernate悲观锁和乐观锁:1.悲观锁:锁如其名,只要是在数据的处理过程中,数
Hibernate悲观锁和乐观锁的实现
Hibernate悲观锁和乐观锁:1.悲观锁:锁如其名,只要是在数据的处理过程中,数据就会被加锁,谁都不能访问,看……多悲观哇。2.乐观锁:相对悲观锁而言,采取了更加宽松的锁机制,大多是基于数据版本 ( Version )记录机制实现。
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栏记录,在读取数据时连同版本号一同读取,并在更新数据时递增版本号,然后比对版本号与数据库中的版本号,如果大于数据库中的版本号则予以更新,否则就回报错误。
具体实现代码,文章后面有示例,请下载。