hibernate事物
2013-07-15 13:30
78 查看
hibernate事务的传播,有三种情况是不可能规避的。第一种脏数据读取,不可重复数据读取,幻读。
脏数据:就是一个事务A处理过一条数据,保存在session中,还没有提交,另一个事务B从session中拿到这条数据,去处理。事务A突然回滚了,这条数据并没有存入数据库中,从而事务B拿到这样一条数据,就称为脏数据。
不可重复数据读取:就是事务A对数据库中同一条数据进行两次以上查询,每次查询的结果都不一样。这就叫不可重复读取。例如:事务A读取一条用户信息,根据名字小明,去查小明的年龄。第一次,读取的时候,小明的年龄为22,读取完后,事务B将小明的年龄改为21岁,事务A在去读取的时候,小明的年龄为21岁了。
幻读:它其实跟不可冲重复读取类似。它是事务A根据相同条件对数据库进行多次查询,每次查询出来的结果集不一样。例如:事务A根据用户年龄为22的,去查数据库中所有符合的用户。第一次,查询出来的结果集为22个用户,读取完后,事务B插入一个叫小明小伙子,年龄为22岁,事务A再去读取的时候,结果集为23个用户。
Hibernate事物隔离级别分为Serializable,Repeatable Read, Read Committed,Read Uncommitted。
Read Uncommitted:又称为可读未提交,他可以防止更新丢失,但可能出现脏数据 ,重复读数据,幻读数据。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。
Read Committed:又称为可读提交,它可以防止脏数据,但可能出现 重复数据 ,幻读数据。这种事务级别是经常在项目开发中用到的。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
Repeatable Read:又称为可重复读取,它可以防止脏数据,重复数据 ,但有可能出现幻读数据。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
Serializable:又称为序列化,也就是说数据库中任何一条数据,只要事务A访问它,它就被锁定了,其他事务B,C,D,等都不能并发(同时)访问该条数据,一直到A事务完成对该条数据的操作,事务B,C, D,等才能依次去访问。说白了,就是事务A,B,C,D排队去访问该数据,一个一个来。这种事务级别是最高的,最安全的,但却是最消耗数据库性能的。
脏数据:就是一个事务A处理过一条数据,保存在session中,还没有提交,另一个事务B从session中拿到这条数据,去处理。事务A突然回滚了,这条数据并没有存入数据库中,从而事务B拿到这样一条数据,就称为脏数据。
不可重复数据读取:就是事务A对数据库中同一条数据进行两次以上查询,每次查询的结果都不一样。这就叫不可重复读取。例如:事务A读取一条用户信息,根据名字小明,去查小明的年龄。第一次,读取的时候,小明的年龄为22,读取完后,事务B将小明的年龄改为21岁,事务A在去读取的时候,小明的年龄为21岁了。
幻读:它其实跟不可冲重复读取类似。它是事务A根据相同条件对数据库进行多次查询,每次查询出来的结果集不一样。例如:事务A根据用户年龄为22的,去查数据库中所有符合的用户。第一次,查询出来的结果集为22个用户,读取完后,事务B插入一个叫小明小伙子,年龄为22岁,事务A再去读取的时候,结果集为23个用户。
Hibernate事物隔离级别分为Serializable,Repeatable Read, Read Committed,Read Uncommitted。
Read Uncommitted:又称为可读未提交,他可以防止更新丢失,但可能出现脏数据 ,重复读数据,幻读数据。如果一个事务已经开始写数据,则另外一个事务则不允许同时进行写操作,但允许其他事务读此行数据。
Read Committed:又称为可读提交,它可以防止脏数据,但可能出现 重复数据 ,幻读数据。这种事务级别是经常在项目开发中用到的。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
Repeatable Read:又称为可重复读取,它可以防止脏数据,重复数据 ,但有可能出现幻读数据。读取数据的事务将会禁止写事务(但允许读事务),写事务则禁止任何其他事务。
Serializable:又称为序列化,也就是说数据库中任何一条数据,只要事务A访问它,它就被锁定了,其他事务B,C,D,等都不能并发(同时)访问该条数据,一直到A事务完成对该条数据的操作,事务B,C, D,等才能依次去访问。说白了,就是事务A,B,C,D排队去访问该数据,一个一个来。这种事务级别是最高的,最安全的,但却是最消耗数据库性能的。
相关文章推荐
- hibernate--事物机制(面试)
- Hibernate中编程式事物的简单使用
- spring和hibernate集成事物管理配置方法
- Spring+hibernate+mysql事物不回滚的原因以及处理
- Spring+hibernate+mysql事物不回滚的原因以及处理
- sprint+hibernate配置事物发生异常却不回滚
- 转:Could not commit Hibernate 问题,spring 事物 提交前session关闭问题
- Hibernate中编程式事物的简单使用
- spring和hibernate集成事物管理配置方法
- Spring+hibernate+mysql事物不回滚的原因以及处理
- Spring+hibernate+mysql事物不回滚的原因以及处理
- Hibernate 事物隔离级别 深入探究
- spring 管理 hibernate 事物,抛异常 org.hibernate.HibernateException: save is not valid without active transa
- hibernate里事物的相关讲解与介绍
- Hibernate 事物隔离级别 深入探究
- Hibernate集成Spring出现写操作在只读事物中的问题
- hibernate事物
- spring中配置hibernate事务管理,出错时事物不回滚
- hibernate+mysql时,会出现事物不管用
- Hibernate中编程式事物的简单使用