脏读
不可重复读
幻读
可序列化(符合事务的四个特性的正常情况 )

解释:
脏读:事务A对数据1做了更新,但是还没有来得及提交
此时事务B对数据1进行了查询获得了事务A更新后的数据,
但是事务A因为一些原因又进行了回滚,这就导致数据1回到了
最初状态,那事务B读取的数据就是错误的,这就是脏读

不可重复读:事务A查询了数据1,然后事务B更新了这个数据并进行了
提交,然后事务A又读取了这个数据,两个数据不一致,叫做不可重复读

幻读:事务A查询了a表,里面只有一条数据,然后事务B对a表进行了添加,
现在表里有两条数据,然后事务A又对表a进行了查询,这时候的查询就有两条数据
这种叫做幻读(大多数情况下数据库选择的隔离级别就是这里,允许出现幻读
因为如果要完全符合可序列化,也就是acid 那就表明事务A在执行的时候,其他
的事务就要等着)

Hibernate中的隔离级别
默认设置
Hibernate.connection.isolation= 4
1:读操作未提交(Read Uncommitted) 也就是脏读
2:读操作已提交(Read Committed) 也就是不可重复读
4:可重读(Repeatable Read) 也就是幻读
8:可串行化(Serializable)

可以在hibernate.cfg.xml中配置一行
<property name="hibernate.connection.isolation">4<property>

----------------------------------------------------
这是在数据库级别进行设置,也可以在代码方面进行设置
乐观锁
悲观锁

乐观锁

通过version字段(在数据库中插入一个version字段,数据类型要是整型int或者long等)
或timestamp字段(不推荐,因为在小的时候都有可能会重叠)实现

当对表数据进行添加和修改时,version字段会改变
当修改数据时,Hibernate会获取当前的version值,提交当前事务时,
如果version值和之前获取的不同,那就会抛出org.hibernate.StaleObjectStateException异常。

注解的形式

@Version
private Integer version;

xml配置的形式

<version name="version"/>

如:

<class name="User" table="user">
<cache usage="read-write"/> <id name="id">
<generator class="native"/>
</id> <property name="username"/>
<property name="password"/> <set name="addressSet" cascade="delete" inverse="true">
<cache usage="read-write"/>
<key column="userid"/>
<one-to-many class="Address"/>
</set>
<!--
<version name="version" column="xxxx"/>
-->
</class>

悲观锁 :

当前事务没有完成,其他事务都不能执行
只需要添加一个参数
Account account= (Account) session.get(Account.class,1,LockOptions.UPGRADE);

hibernate 事务的隔离级别 5.1的更多相关文章

  1. hibernate 事务的隔离级别

    脏读不可重复读幻读可序列化(符合事务的四个特性的正常情况 ) 解释: 脏读:事务A对数据1做了更新,但是还没有来得及提交 此时事务B对数据1进行了查询获得了事务A更新后的数据, 但是事务A因为一些原因 ...

  2. Hibernate中事务的隔离级别设置

    Hibernate中事务的隔离级别,如下方法分别为1/2/4/8. 在Hibernate配置文件中设置,设置代码如下

  3. [原创]java WEB学习笔记78:Hibernate学习之路---session概述,session缓存(hibernate 一级缓存),数据库的隔离级别,在 MySql 中设置隔离级别,在 Hibernate 中设置隔离级别

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  4. 事务之二:spring事务(事务管理方式,事务5隔离级别,7个事务传播行为,spring事务回滚条件)

    事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...

  5. MySQL事务学习-->隔离级别

    MySQL事务学习-->隔离级别 6 事务的隔离级别 设置的目的 在数据库操作中,为了有效保证并发读取数据的正确性,提出的事务隔离级别. 数据库是要被广大客户所共享访问的,那么在数据库操作过程中 ...

  6. SQL Server事务的隔离级别

    SQL Server事务的隔离级别 ########## 数据库中数据的一致性 ########## 针对并发事务出现的数据不一致性,提出了4个级别的解决方法:  隔离级别  第一类丢失更新  脏读 ...

  7. 事务的隔离级别及mysql对应操作

    /* 本次高并发解决之道 1,更改事务隔离级别为 read uncommitted读未提交 2,查询前设定延迟,延迟时间为随机 50-500 微秒 3,修改数据前将 超范围作为 限定修改条件 事务是作 ...

  8. MySQL(26):事务的隔离级别出现问题之 幻读

    1. 幻读 幻读(Phantom Read)又称为虚读,是指在一个事务内两次查询中数据条数不一致,幻读和不重复读有些类型,同样是在两次查询过程中,不同的是,幻读是由于其他事务做了插入记录的操作,导致记 ...

  9. MySQL(25):事务的隔离级别出现问题之 不可重复读

    1. 不可重复读 所谓的不可重复读(Non-Repeatable Read)是指事务中两次查询的结果不一致,原因是在查询的过程中其他事务做了更新的操作. 例如,银行在做统计报表的时候,第一次查询a账户 ...

随机推荐

  1. 浅析linux中的fork、vfork和clone

    各种大神的混合,做个笔记. http://blog.sina.com.cn/s/blog_7598036901019fcg.html http://blog.csdn.net/kennyrose/ar ...

  2. C# 动态载入Dll

    1.新建測试dll及方法,用vs2010新建winform程序,详细代码例如以下: using System; using System.Collections.Generic; using Syst ...

  3. Ajax+asp.net实现用户登陆 转自http://www.shangxueba.com/jingyan/2933319.html

    这篇文章主要介绍了Ajax+asp.net实现用户登陆,主要是为了练习ajax的使用方法,有需要的小伙伴参考下. 以用户登录为例练习ajax的使用方法 login.html <!DOCTYPE ...

  4. Matlab中的取整-floor,ceil,fix,round

    FLOOR Round towards minus infinity. FLOOR(X) rounds the elements of X to the nearest integers toward ...

  5. Android ListView 删除动画

    Android 的ListView在删除条目时,被删除的条目直接消失,比较生硬,在此实现一下删除动画,大家一起探讨:主要实现原理即是通过Animator来实现被删除条目的动画效果,然后在动画结束时通过 ...

  6. ASP.NET产生随机验证码

    效果图:(Flowing) 1.项目中新建用于存储(位图)图片文件夹 图解: 2.前台可以添加一ASP.NET控件或其他任意用来展示图片标签等(如下) <div> <asp:Imag ...

  7. 浮点数(double)的优势

    用 double 处理大数据 , 即使字符串位数超百位,同样可以用 sscanf 或 atof 来处理,却不会变成负数,原因是浮点数可以用指数表示,但精度会丢失,下面介绍利用这个性质解决的一些问题: ...

  8. libuv 错误号UV_ECANCELED 的处理

    这个地方有好多的不明白,也没仔细的看懂代码,希望有牛人指点. 先记录几个issue 1. after_write recv many(>10000) ECANCELED in my write_ ...

  9. js中||和&&的用法

    在js中&&.||不一定都是用来判断一个表达式的逻辑值是true.false,更多的是用来依据真值或者假值执行相应操作! a() && b() :如果执行a()后返回t ...

  10. 宣布发布 Windows Azure SDK 2.2,正式发布 Windows Azure Backup 和 Hyper-V 恢复管理器预览版

    开发人员正逐渐转向云计算,因为它具有众多优势,包括成本.自动化和让开发人员专注于应用程序逻辑的能力.我们很高兴地宣布,继推出 Visual Studio 2013 之后,今天将发布 Windows A ...