Spring事务控制我们要明确的

第一:JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案。

第二:spring框架为我们提供了一组事务控制的接口。具体在后面的第二小节介绍。这组接口是在spring-tx-5.0.2.RELEASE.jar中。

第三:spring的事务控制都是基于AOP的,它既可以使用编程的方式实现,也可以使用配置的方式实现。我们学习的重点是使用配置的方式实现。

Spring中事务控制的API介绍

PlatformTransactionManager

此接口是spring的事务管理器,它里面提供了我们常用的操作事务的方法,如下图:

我们在开发中都是使用它的实现类,如下图:

真正管理事务的对象

org.springframework.jdbc.datasource.DataSourceTransactionManager 使用Spring JDBC或iBatis 进行持久化数据时使用

org.springframework.orm.hibernate5.HibernateTransactionManager 使用Hibernate版本进行持久化数据时使用

TransactionDefinition

它是事务的定义信息对象,里面有如下方法:

事务的隔离级别

事务的传播行为

REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般的选择(默认值)

SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)

MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常

REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起。

NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起

NEVER:以非事务方式运行,如果当前存在事务,抛出异常

NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行REQUIRED类似的操作。

超时时间

默认值是-1,没有超时限制。如果有,以秒为单位进行设置。

是否是只读事务

建议查询时设置为只读。

TransactionStatus

此接口提供的是事务具体的运行状态,方法介绍如下图:

spring中事务控制的一组API相关推荐

  1. 【Spring】事务控制API

    Spring事务控制需要明确 1. JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计==业务层==的事务处理解决方案. 2. Spring框架提供了一组事务控制的接口.在S ...

  2. Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现

    前言 本专题大纲如下: 事务专题大纲 「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用中的问题,这两天想了想还是单独写一篇并作为事 ...

  3. Spring中事务的使用、抽象机制及模拟Spring事务实现

    本文大纲如下: Spring事务应用大纲 编程式事务 Spring提供了两种编程式事务管理的方法 使用 TransactionTemplate 或者 TransactionalOperator. 直接 ...

  4. 事务例子_Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现...

    Spring中事务的使用示例.属性及使用中可能出现的问题 前言 本专题大纲如下: 「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用 ...

  5. spring中事务失效的几种情况

    下面简单介绍下,spring中常见的事务失效的几种情况.让我们在开发的过程避免这些情况,写出正确而且优雅的代码. 文章目录 数据库引擎不支持,mysql需要InnoDB 方法必须是public的 方法 ...

  6. spring中的控制反转和依赖注入之间的关系

    Spring中的控制反转:把new这一个过程交给了spring容器去处理. 控制反转就是将new对象这一个过程交给外部去做(即Spring)而不是自己去创建. 图中的1"控制正转" ...

  7. spring中事务配置的3种方式-2

    http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch09s05.html http://zpchen.iteye.com/blog/ ...

  8. Spring AOP+事务控制

    为什么80%的码农都做不了架构师?>>>    AOP事务控制   applicationContext.xml配置文件 <!-- 开启AOP监听 只对当前配置文件有效 --& ...

  9. 轻松了解Spring中的控制反转和依赖注入

    点击上方 "程序员小乐"关注公众号, 星标或置顶一起成长 每天早上8点20分, 第一时间与你相约 每日英文 When you have something you really l ...

最新文章

  1. (C++)1041 考试座位号
  2. php中并发读写文件冲突的解决方案(文件锁应用示例)
  3. 【亲身经验】如何在 6 个月内成为“微软 MVP”
  4. jQuery Mobile 1.1 : 更流畅,更快捷,更实用
  5. 阿里云何川:开放兼容的云,计算巢帮助合作伙伴云化升级
  6. Dapp开发教程四 Asch Dapp Dice Game
  7. c++双向列表释放_至为芯科技IP5356集成20W输出和双路TYPE-C快充输出,适用于充电宝/移动电源方案...
  8. 如何做一个国产数据库(二)
  9. Java面向对象之多态解析、final关键字
  10. 20145302张薇 《信息安全系统设计基础》第14周学习总结
  11. 在公司交了十年社保了,退休了,自己还要补交六、七万元社保,你觉得该不该补交?
  12. 虚拟IP技术-VIP 与 负载均衡
  13. DIAView 嵌入视频监控(海康威视)
  14. 项目管理常用的七大工具
  15. SD卡、SDHC卡和SDXC卡的功能及区别
  16. 基于JAVA高速公路收费管理计算机毕业设计源码+数据库+lw文档+系统+部署
  17. 下列python语句的输出结果是_下列Python语句的输出结果是
  18. cad图转成shp文件并把其平面坐标投影配准成大地坐标(配准针对没有底图的情况)
  19. oracle判断不包含,oracle查询不含括号及不含指定字符的方法
  20. 如何在Sqlserver 中创建非dbo 的表

热门文章

  1. Java重写、super关键字、继承中的构造方法
  2. 团队开发-----电子秘书(便签+闹钟+音视频)
  3. word中中文保持正体,英文用斜体的方法.
  4. grub2从usb启动
  5. 【规范】前端编码规范——css 规范
  6. MKMapView的Span和Region深入分析
  7. 解决chrome和firefox flash不透明的方法
  8. JUnit 3一个例子就懂
  9. Android笔记: 解决ScrollView嵌套ListView的冲突方法
  10. Asp.net在IIS6.0权限设置的问题,大牛进