博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hibernate的乐观锁并发控制机制
阅读量:4177 次
发布时间:2019-05-26

本文共 903 字,大约阅读时间需要 3 分钟。

1. 乐观锁的并发控制机制概述
  • 默认不考虑并发执行的事务之间的影响,只有在事务提交的时候检查数据冲突。
  • 如果没有数据冲突,则提交当前事务。
  • 如果有数据冲突,则回滚当前事务(只有检查到冲突的那个事务被回滚)。
Hibernate的乐观锁,非常适合那些read-often-write-sometimes的应用。
2. Hibernate的乐观锁实现机制就是在数据库中存储数据的版本信息,对应Entity对象中的属性以@javax.persistence.Version定义:

  • 专用的version属性(可以是任意类型)

@javax.persistent.Versionprivate long version;

  • timestamp(Date或Calendar类型)

@javax.persistent.Versionprivate Date version;

注意:

对于处于persistent/detached状态的Entity对象,其Version属性不能为null;

只有transient状态的Entity对象,其Version属性才能为null。
3. Hibernate的乐观锁并发控制就是对version属性的检查,应用中进行version checking的3种情况:
  • 在事务提交前,应用代码主动进行version checking(不推荐)
int oldVersion = foo.getVersion();session.load( foo, foo.getKey() ); // load the current stateif ( oldVersion != foo.getVersion() ) throw new StaleObjectStateException();
  • 在事务提交前,调用Session的flush()方法时,Hibernate自动进行version checking
  • 对于detached状态的Entity对象调用Session的update()、merge()或saveOrUpdate()时,Hibernate自动进行version checking

转载地址:http://eilai.baihongyu.com/

你可能感兴趣的文章
菜鸟文科生的java之路:变量和常量
查看>>
菜鸟文科生的java之路:流程控制语句
查看>>
北海糖:Java初阶练习题
查看>>
不知道什么是数组?看这里就好了
查看>>
文科生北海唐的Java之路:方法(慕课)
查看>>
自学Java的轨迹线路
查看>>
如何更好的隐藏你自己,让我们谈谈什么是封装?
查看>>
文科生北海糖的:Java之路——继承
查看>>
Makefile 中:= ?= += =的区别
查看>>
消灭编译警告(Warning)
查看>>
(GCC) How can I hide "defined but not used" warnings in GCC?
查看>>
错误: 隐式声明函数‘kmalloc’ [-Werror=implicit-function-declaration]
查看>>
error: two or more data types in declaration specifiers原因及解决方法
查看>>
Linux驱动基础开发2
查看>>
ioctl在socket中的一些用法及示例
查看>>
Linux设备驱动--块设备(二)之相关结构体
查看>>
Linux设备驱动--块设备(四)之“自造请求”
查看>>
Nand Flash和Nor Flash相关知识
查看>>
NAND flash和NOR flash的区别
查看>>
writeb(), writew(), writel(),readb(), readw(), readl() 宏函数
查看>>