hibernate事物
来源:互联网 发布:win7系统优化设置 编辑:程序博客网 时间:2024/06/05 06:01
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排队去访问该数据,一个一个来。这种事务级别是最高的,最安全的,但却是最消耗数据库性能的。
- hibernate事物
- hibernate事物
- Hibernate事物管理简述
- Hibernate事物管理
- hibernate事物关闭不了
- hibernate处理事物
- Hibernate 事物隔离级别
- hibernate事物管理
- hibernate事物隔离机制
- Hibernate的事物机制
- Hibernate事物和并发
- Hibernate中的事物Transaction
- struts2+hibernate+spring 事物控制
- mysql hibernate spring 事物 不起作用
- hibernate事物的并发处理
- hibernate 数据库事物并发处理
- 转 hibernate事物的理解
- spring中hibernate的事物
- Android 桌面Widget开发要点(时间日期Widget)
- C++编译器无法捕捉到的8种错误
- Android ListView控件显示数据库中图片
- 嵌入式内核分析
- RC4加密
- hibernate事物
- 【Android UI设计与开发】第16期:滑动菜单栏(一)开源项目SlidingMenu的使用
- click事件无法触发、div存取数值
- android的dip与px
- 多线程多次查询数据生成一个文件——解决内存溢出
- aChartEngine图表显示(一页显示多张图表)
- setTimeout和setInterval的使用
- 数论,扩展欧几里德算法,同余方程
- Mybatis使用注解版传递两个参数时如果保证传参数正确