2019独角兽企业重金招聘Python工程师标准>>>

spring事务管理主要有三个接口:

  1. 事务管理器接口:PlatformTransactionManager。可以为不同的框架提供不同的实现,包括Spring JDBC、iBatis、Hibernate(有版本限制,3.0以上,spring版本更高时需要更高版本)、JPA、Jdo、JTA
  2. 事务定义接口:TransactionDefinition。包括设置隔离级别(ISOLATION)、传播行为(PROPAGATION)、超时信息(TIMEOUT)、只读参数(READONLY)。
  3. 事务状态接口:TransactionStatus。获取事务具体的状态。

详细:

关于事务隔离级别,有5种。分别是:

  • ISOLATION_DEFAULT,默认隔离级别,也就是根据数据的默认隔离级别,不同的数据库的隔离级别也不尽相同。
  • ISOLATION_READ_UNCOMMITTED,级别最低的隔离级别。允许读取其他还未提交但已改变的数据,可导致脏读、幻读、不可重复读等异常
  • ISOLATION_READ_COMMITTED,提交隔离级别。允许读取其他已经提交的数据,可防止脏读,但可能出现幻读、不可重复读
  • ISOLATION_REPEATABLE_READ,更高级别的隔离。对相同字段的多次读取是一致的,可防止脏读、不可重复读,但可能出现幻读
  • ISOLATION_SERIALIZABLE,级别最高的隔离。采用锁的方式进行事务操作,可以防止脏读、幻读、不可重复读,但随之而来的付出的时间和性能代价也更大

关于事务传播行为,事务传播行为主要是用来解决业务层对事务的调用问题,有7种。分别是:

  • PROPAGATION_REQUIRED,默认的传播行为,当前如果有事务,Spring就会使用该事务,否则会开始一个新事务
  • PROPAGATION_SUPPORTS,如果当前有事务则使用,没有也不会开始新事务
  • PROPAGATION_MANDATORY,如果当前有事务则使用,没有则会抛出异常
  • PROPAGATION_REQUIRES_NEW,总是会开启新事务,如果当前已经有事务存在会将原有的事务挂起
  • PROPAGATION_NOT_SUPPORTED,以非事务形式运行行为,如果当前已经有事务存在则挂起该事务
  • PROPAGATION_NEVER,以非事务形式运行行为,如果当前已经有事务存在则抛出异常
  • PROPAGATION_NESTED,如果当前有事务存在,则嵌套在该事务下执行;没有则会开启新事务

事务超时时间则是以getTimeout()方法获取,单位为秒(s);是否只读则通过isReadOnly()方法获取。

关于TransactionStatus接口的操作主要有三个,分别是isNewTransaction() 是否是新事务、isRollbackOnly()是否是只回滚事务,还有一个最重要的方法setRollbackOnly(),这个方法将事务设置为只允许回滚操作,即事务在任何操作下都是最终执行回滚。

转载于:https://my.oschina.net/u/2428684/blog/686034

spring事务管理一:关于事务管理的接口相关推荐

  1. Spring 使用注解方式进行事务管理

    2019独角兽企业重金招聘Python工程师标准>>> 大家在使用spring的注解式事务管理时,对事务的传播行为和隔离级别可能有点不知所措,下边就详细的介绍下以备方便查阅. 事物注 ...

  2. Spring事务管理--(一)数据库事务隔离级别与mysql引擎基础讲解

    一.前言 本篇文章来自网络整理,很简单,但是很实用对于初级和中级工程师. 原创地址1:http://www.cnblogs.com/hollen/archive/2012/05/13/2498309. ...

  3. Spring JDBC-Spring事务管理之数据库事务基础知识

    概述 数据库事务的概念 原子性 一致性 隔离性 持久性 数据并发的问题 脏读dirty read 不可重复读unrepeatable read 幻象读 phantom read 幻象读和不可重复度的区 ...

  4. SSM框架中使用Spring的@Transactional注解进行事务管理

    一 介绍 在企业级应用中,保护数据的完整性是非常重要的一件事.因此不管应用的性能是多么的高.界面是多么的好看,如果在转账的过程中出现了意外导致用户的账号金额发生错误,那么这样的应用程序也是不可接受的 ...

  5. spring+mybatis之声明式事务管理初识(小实例)

    前几篇的文章都只是初步学习spring和mybatis框架,所写的实例也都非常简单,所进行的数据访问控制也都很简单,没有加入事务管理.这篇文章将初步接触事务管理. 1.事务管理 理解事务管理之前,先通 ...

  6. spring boot配置mybatis和事务管理

    spring boot配置mybatis和事务管理 一.spring boot与mybatis的配置 1.首先,spring boot 配置mybatis需要的全部依赖如下: <!-- Spri ...

  7. java spring事务管理系统_Java Spring-事务管理概述

    2017-11-11 23:05:39 事务(Transaction):是逻辑上一组操作,要么全都成功,要么全都失败. 一.事务的特性 原子性:事务不可分割 一致性:事务执行的前后,数据完整性保持一致 ...

  8. Spring 框架基础(05):事务管理机制,和实现方式

    本文源码:GitHub·点这里 || GitEE·点这里 一.Spring事务管理 1.基础描述 Spring事务管理的本质就是封装了数据库对事务支持的操作,使用JDBC的事务管理机制,就是利用jav ...

  9. Spring ORM示例 - 带有AOP事务管理

    Spring ORM示例 - 带有AOP事务管理 这是一个非常简单的Spring ORM示例,向您展示如何使用Spring配置应用程序 依赖注入(@Autowired annotation), JPA ...

  10. spring配置mysql事务管理_Spring 数据库事务管理机制

    要点1 Spring事务管理方法编程式事务(TransactionTemplate.PlatformTransactionManager) 声明式事务(配置式.注解式) 2 Spring 注解 @Tr ...

最新文章

  1. pytorch 多进程队列
  2. Winform中实现批量文件复制(附代码下载)
  3. Ubuntu 更改ROOT密码的方法
  4. Mutual and feedback(互评与反馈)
  5. C++如何使用MySQL数据库
  6. 人工智障学习笔记——深度学习(2)卷积神经网络
  7. 《天天数学》连载15:一月十五日
  8. systemtap原理及使用
  9. uos系统终端调试linux命令,uos怎么开启开发者模式
  10. HTTPS 会变成跟踪功能
  11. Nmap简单使用教程
  12. 有感于《游戏脚本高级编程》的劣质翻译
  13. 按键精灵python插件_按键精灵必须掌握的命令之插件命令
  14. Linux内存映射实现
  15. ESP8266-Arduino网络编程实例-HightCharts实时图表显示BME280数据
  16. 角色个人属性英文缩写
  17. SQL分组排序和排序函数(rank、dense_rank、row_number)
  18. 公寓这个大坑,劝大家不要再跳了
  19. JAVA全栈开发微服务架构模式
  20. “日本以太坊”Cardano的“区域自治”王国

热门文章

  1. 如何做一场精彩的学术报告?
  2. 跟着这篇柳叶刀的文章来学会重复测量方差分析
  3. 湖南铁路科技职业技术学院计算机等级,湖南铁路科技职业技术学院——高速铁路动车乘务专业...
  4. 按照秒数延时打印、运行
  5. ArcGIS Server 10.2 安装教程
  6. MultiSlider组件
  7. VC char和TCHAR之间转换
  8. 损失函数|交叉熵损失函数
  9. python2和pytho3切换_python2和pytho3切换_Python2和Python3共存安装
  10. PyQt5 笔记2 -- Qt Designer使用