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

解释:
脏读:事务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. UVA - 10129Play on Words(欧拉路)

    UVA - 10129Play on Words Some of the secret doors contain a very interesting word puzzle. The team o ...

  2. Forstner算子

  3. 使用 system.io.filesysteminfo 来查找文件。

    如何快速搜索你想找到文件呢.大家知道Windows系统自带了搜索,很方便,下面介绍自己编写的也可以达到同样的效果.注意.有些文件的访问需要更高的权限.这里暂且去掉那些文件目录的搜索.不然会出现erro ...

  4. 关于给javascript对象添加、删除、修改对象的属性

    以下是自己总结的几种方法 利用动态特性 function Person(){}; var person = new Person(); person.name = 'yy'; person.gende ...

  5. Jquery 方法大全

    一.JQuery常用的方法 :(JQuery中90%都是方法,没有参数是获取,带参数是设置) $("#id").css('backgroundColor','blue'); .cs ...

  6. BZOJ 2440 完全平方数(莫比乌斯反演+二分查找)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=23362 题意:定义含有平方数因子的数为完全平方数(平方数因子不包含 ...

  7. BZOJ 1878: [SDOI2009]HH的项链( BIT )

    离线处理 , 记下询问的左右端点并排序 , 然后可以利用树状数组 , 保证查询区间时每种颜色只计算一次 ------------------------------------------------ ...

  8. linux怎样修改用户权限

    ls -l  查看目录下的文件详细信息 ll 同上 whoami 功能说明:先似乎用户名称. 语 法:whoami [--help][--version] 补充说明:显示自身的用户名称,本指令相当于执 ...

  9. Cloudera Manager Service Monitor 定期挂掉问题排查

    显示:查询 Service Monitor 时发生内部错误(Error sending messages to firehose: mgmt-SERVICEMONITOR-) 1.初步排查出是smon ...

  10. 获取json格式字符串的简单方法

    有的时候需要找一些Json格式的字符串,可以打开任意一个网页进入到调试模式,然后看network相关的访问信息,就可以获取到. 比如: 在记笔记的时候,点击保存后,会发出一些请求,然后有相应的相应,任 ...