Spring事务控制需要明确

1. JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计==业务层==的事务处理解决方案。
2. Spring框架提供了一组事务控制的接口。在Spring-tx-5.0.2.RELEASE.jar中。
3. Spring的事务控制都是基于AOP的。它既可以使用编程的方式实现,也可以使用配置方式实现。

Spring的事务管理器–PlatformTransactionManager接口

此接口中提供的事务操作的方法有
1.获取事务状态信息

TransactionStatus getTransaction(TransactionDefinition definition)

2.提交事务

void commit(TansactionStatus status)

3.回滚事务

void rollback(TransationStatus status)

真正管理事务的对象

使用Spring JDBC或iBatis进行持久化数据时使用

org.springframework.jdbc,datasource.DataSourceTransactionManager

使用Hibernate版本进行持久化数据时使用

org.springframework,orm.hibernate5,HibernateTransactionManager

TransactionDefinition

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

String getName() //获取事务对象的名称
int getIsolationLevle() //获取事务隔离级
int getPropagationBehavior() //获取事务传播行为
int getTimeout() //获取事务超时时间
boolean isReadOnly()  //获取事务是否只读

事务的隔离级别

事务的隔离级别反应事务提交并发访问时的处理态度

ISOLATION_DEFAULT //默认级别,归属下列某一种
ISLATION_READ_UNCOMMITTED  //可以读取未提交的数据
ISOLATION_READ_COMMITTED //只能读取已提交数据,解决脏读问题(Oracle默认级别)
ISOLATION_REPEATABLE_READ //是否读取其他事务提交修改后的数据,解决不可重复读问题(Mysql默认级别)
ISOLATION_SERIALIZABLE  //是否读取其他事务提交添加后的数据,解决幻影读的问题

事务的传播行为

REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。一般选默认值
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行(没有事务)
MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。
REQUERS_NEW:新建事务,如果当前在事务中,把当前事务挂起
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起
NEVER:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行REQUIRED类似的操作。

事务的超时时间

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

事务是否为只读事务

建议查询是设置为只读。

TransactionStatus

此接口提供的是事务具体的运行状态,Transaction接口描述了某个时间点上事务对象的状态信息,包含有6个具体的操作:

//1.刷新事务
void flush()
//2.获取是否存在存储点
boolean hasSavepoint();
//3.事务是否完成
boolean isCompleted();
//4.获取事务是否为新的事务
boolean isNewTransaction();
//5.获取事务是否回滚
boolean isRollbackOnly();
//6.设置事务回滚
void setRollbackOnly();

【Spring】事务控制API相关推荐

  1. Spring-学习笔记10【Spring事务控制】

    Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...

  2. Spring——DAO层、Spring JDBC、Spring事务控制

    目录 一.Spring对持久层技术支持 1.Spring支持的持久层技术 2.Spring JDBC 2.1. JDBCTemplate类 2.2.Spring JDBC CRUD操作 2.3.Spr ...

  3. spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制.怎样才能即使用try catch去捕获异常 ...

  4. spring—事务控制

    编程式事务控制相关对象 PlatformTransactionManager PlatformTransactionManager 接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的 ...

  5. Spring事务控制和传递性理解

    1.在同一类方法间相互调用,如果调用方无事务控制,被调用方有事务控制,则被调用方也无事务 原因:外部经过spring容器调用service的方法事务才生效,service类内部方法间相互调用事务不生效 ...

  6. Spring : Spring 事务控制 设置手动回滚 TransactionAspectSupport

    1.美图 2.概述 //假设这是一个service类的片段try{ //出现异常 } catch (Exception e) {e.printStackTrace()

  7. spring中事务控制的一组API

    Spring事务控制我们要明确的 第一:JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案. 第二:spring框架为我们提供了一组事务控制的接口.具 ...

  8. Spring的事务控制-基于注解的方式

    模拟转账操作,即Jone减少500,tom增加500 如果有疑问请访问spring事务控制-基于xml方式 1.创建数据表 2.创建Account实体类 public class Account {p ...

  9. Spring实战(十三)Spring事务

    1.什么是事务(Transaction)? 事务是指逻辑上的一组操作,要么全部成功,要么全部失败. 事务是指将一系列数据操作捆绑成为一个整体进行统一管理.如果某一事务执行成功,则该事务中进行的所有数据 ...

最新文章

  1. html点击按钮自动获取值,如何获取HTML按钮的文本值
  2. Vue语法学习第三课——计算属性
  3. 使用NPM和Nodejs编写编译工具
  4. MySQL统计信息收集
  5. cupsd进程_Linux进程基础
  6. shell 提取sql 的字段名表名_Mysql常用SQL语句集锦 |建议转发收藏
  7. linux 网络检测工具有哪些,Linux系统下常用的网络测速工具有哪些
  8. springboot 之 Starter
  9. [4G5G专题-90]:流程 - 4G LTE 专用承载建立与Qos业务:QCI、ARP、AMBR、GBR、NON-GBR
  10. 百度地图坐标拾取系统自定义页面
  11. ContextCapture User Guide V4.4.11 Welcome(Smart3D 帮助文档 第一章 欢迎)
  12. Linux IP代理筛选系统
  13. 公共数据库挖掘第一步-GEO数据库下载表达谱数据和生存数据
  14. 求求你别再写上千行的类了,试试 IDEA 这些牛逼的重构技巧吧!
  15. 广东工学院计算机教授,胡晓敏(广东工业大学计算机学院副教授)_百度百科...
  16. 美国交通事故分析(2017)(项目练习_5)
  17. 2017年度专业技术人员资格考试时间安排
  18. 驻留内存 虚拟内存 共享内存
  19. python慢的原因
  20. ssd用在无盘服务器,无盘服务器用ssd

热门文章

  1. 阿里云K8S容器服务的使用
  2. 2022-2028年中国FEP薄膜行业市场发展规模及市场分析预测报告
  3. 2022-2028年中国纺织服装专业市场深度调研及前景预测报告(全卷)
  4. Windows10自带搜索增强设置
  5. linux模拟器 cygwin源
  6. 基于javaGUI的文档识别工具制作
  7. 前后端分离必备工具:Swagger快速搞定(整合SpringBoot详细教程)
  8. MLIR: 编译器基础架构重定义
  9. 图像实例分割:CenterMask
  10. HTTP/HTTPS的请求和响应