http://blog.csdn.net/yerenyuan_pku/article/details/70650239

事务介绍

什么是事务?

事务就是逻辑上的一组操作,组成这组操作的各个单元要么全部成功,要么全都失败。

事务的四个特性

  • 原子性:不可分割的一个整体。
  • 一致性:事务在执行前后,要保证数据的一致。
  • 隔离性:一个事务在执行的过程中,不应该受到其它事务的干扰。
  • 持久性:事务一旦结束,数据就持久化到数据库中。

不考虑事务的隔离性,会产生什么问题?

不考虑事务的隔离性,会产生如下问题:

  • 脏读:一个事务读取到另一个事务的未提交数据。
  • 不可重复读:一个事务读取到另一个事务提交的数据(主要是指update操作),会导致两次读取的结果不一致。
  • 虚读(幻读):一个事务读取到另一个事务提交的数据(主要是指insert操作),会导致两次(也有可能是多次)读取结果不一致。

对于上述问题如何解决?

我们可以通过设置隔离级别来解决上述问题:

  • READ_UNCOMMITED:读取未提交,它引发所有的隔离问题。
  • READ_COMMITTED:读已提交,阻止脏读,可能发生不可重复读与虚读。
  • REPEATABLE_READ:重复读,阻止脏读、不可重复读,可能发生虚读。
  • SERIALIZABLE:串行化,解决所有问题,但不允许两个事务同时操作一个目标数据。(效率低下)

常见数据库的默认级别:

  1. ORACLE默认的是事务隔离级别是READ_COMMITTED。
  2. MYSQL默认的事务隔离级别是REPEATABLE_READ。

Hibernate中设置事务隔离级别

Hibernate框架中可通过hibernate.connection.isolation来设置事务的隔离级别,它可取的值有1、2、4、8:

  • 1代表的事务隔离级别为READ UNCOMMITTED
  • 2代表的事务隔离级别为READ COMMITTED
  • 4代表的事务隔离级别为REPEATABLE READ
  • 8代表的事务隔离级别为SERIALIZABLE

在Hibernate框架中设置事务的隔离级别,可在hibernate.cfg.xml核心配置文件中添加如下配置:

<property name="hibernate.connection.isolation">4</property>

转载于:https://www.cnblogs.com/telwanggs/p/6964045.html

(转)Hibernate事务管理相关推荐

  1. Hibernate事务管理-HibernateTransactionManager-对hibernate session的管理

    由于对SSH还停留在比较初级的应用水平上,今天在遇到一个疑惑时折腾了很久,具体问题是这样的, 有这么一个测试方法, 1 public static void test1() { 2 Applicati ...

  2. 【大话Hibernate】hibernate事务管理

    事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰. 数据库向用户提供保存当前程序状态的方法,叫事 ...

  3. Hibernate事务管理

    事务只是一个工作单位(单元). 在这种情况下,如果一个步骤失败,则整个事务失败(称为原子性). ACID属性(原子性,一致性,隔离性和持久性)可以描述事务. Hibernate中的事务接口 在hibe ...

  4. Spring对Hibernate事务管理

    http://www.cnblogs.com/m-xy/archive/2013/05/14/3077627.html(挺好的) 还有一种用parent的配置方式,parent配置到哪个层面,事务就控 ...

  5. Spring中的事务管理详解

    在这里主要介绍Spring对事务管理的一些理论知识,实战方面参考上一篇博文: http://www.cnblogs.com/longshiyVip/p/5061547.html 1. 事务简介: 事务 ...

  6. Spring 事务管理高级应用难点剖析

    Spring 事务管理高级应用难点剖析: 第 1 部分 http://www.ibm.com/developerworks/cn/java/j-lo-spring-ts1/index.html htt ...

  7. 说说 Spring 事务管理的实现类

    spring 将事务管理委托给底层具体的持久化实现框架去完成,所以 Spring 为不同的持久化实现类,都提供了 PlatformTransactionManager 接口的实现类. 事务 说明 or ...

  8. Spring 事务管理高级应用难点剖析--转

    第 1 部分 http://www.ibm.com/search/csass/search/?q=%E4%BA%8B%E5%8A%A1&sn=dw&lang=zh&cc=CN& ...

  9. Spring JDBC-混合框架的事务管理

    概述 问题 解决方案 示例Hibernate Spring JDBC 概述 Spring 抽象的 DAO 体系兼容多种数据访问技术,它们各有特色,各有千秋. Hibernate 是非常优秀的 ORM ...

最新文章

  1. 微信小程序 实现复制到剪贴版功能
  2. 从普本到北大:我的跨校跨专业考研经验
  3. 冲刺阶段——Day5
  4. 基于X86平台的PC机通过网络发送一个int(32位)整数的字节顺序
  5. 数据产品-数据可视化大作“数据大屏”
  6. java里pom.xml是啥意思_pom.xml详解
  7. 花了 4 天,破解 UNIX 联合创始人 39 年前的密码!
  8. 修改Chrome默认搜索引擎为Google.com
  9. 为什么派生的子类报错不能实例化抽象类_C# 接口与抽象类实例分析
  10. gvim的常用编辑快捷键
  11. EasyUI:datagrid清空所有选择行
  12. 基于扩频信号的水声信道数据传输系统仿真,研究满足了WSSUS假设的瑞利信道模型,采用相干BPSK调制,联合多普勒Rake接收机
  13. NTC——热敏电阻的采集方法
  14. 【密码术】openssl椭圆曲线密钥对生成
  15. 转换金额为大写人民币-Java
  16. Single shot object detection SSD using MobileNet and OpenCV
  17. 视野 | OpenSearch,云厂商的新选择?
  18. matlab谐波电流测量,基于MATLAB谐波电流检测仿真研究
  19. TL431应用和原理,TL431应用的注意事项
  20. 解决selenium控制webdriver总是被网站检测的问题

热门文章

  1. (97)序列检测器状态转移图,面试必问(二十一)(第20天)
  2. java 跨平台 ios_OGEngine发布跨平台版本,支持iOS及Android
  3. cpuid linux,Linux下获取CPUID、硬盘序列号与MAC地址(2)
  4. RTT 操作片上flash
  5. leecode-11盛最多水的容器C版-双指针的使用
  6. python set并集update_Python中集合set()的使用及处理
  7. 数据结构--循环队列
  8. 数值计算方法(三)——变步长梯形法与龙贝格算法
  9. uboot copy_from_nand代码详解
  10. php添加自定义头部关键字,WordPress主题制作中自定义头部的相关PHP函数解析