【Spring】事务控制API
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相关推荐
- Spring-学习笔记10【Spring事务控制】
Java后端 学习路线 笔记汇总表[黑马程序员] Spring-学习笔记01[Spring框架简介][day01] Spring-学习笔记02[程序间耦合] Spring-学习笔记03[Spring的 ...
- Spring——DAO层、Spring JDBC、Spring事务控制
目录 一.Spring对持久层技术支持 1.Spring支持的持久层技术 2.Spring JDBC 2.1. JDBCTemplate类 2.2.Spring JDBC CRUD操作 2.3.Spr ...
- spring 事务控制 设置手动回滚 TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
如上: 当我们需要在事务控制的service层类中使用try catch 去捕获异常后,就会使事务控制失效,因为该类的异常并没有抛出,就不是触发事务管理机制.怎样才能即使用try catch去捕获异常 ...
- spring—事务控制
编程式事务控制相关对象 PlatformTransactionManager PlatformTransactionManager 接口是 spring 的事务管理器,它里面提供了我们常用的操作事务的 ...
- Spring事务控制和传递性理解
1.在同一类方法间相互调用,如果调用方无事务控制,被调用方有事务控制,则被调用方也无事务 原因:外部经过spring容器调用service的方法事务才生效,service类内部方法间相互调用事务不生效 ...
- Spring : Spring 事务控制 设置手动回滚 TransactionAspectSupport
1.美图 2.概述 //假设这是一个service类的片段try{ //出现异常 } catch (Exception e) {e.printStackTrace()
- spring中事务控制的一组API
Spring事务控制我们要明确的 第一:JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案. 第二:spring框架为我们提供了一组事务控制的接口.具 ...
- Spring的事务控制-基于注解的方式
模拟转账操作,即Jone减少500,tom增加500 如果有疑问请访问spring事务控制-基于xml方式 1.创建数据表 2.创建Account实体类 public class Account {p ...
- Spring实战(十三)Spring事务
1.什么是事务(Transaction)? 事务是指逻辑上的一组操作,要么全部成功,要么全部失败. 事务是指将一系列数据操作捆绑成为一个整体进行统一管理.如果某一事务执行成功,则该事务中进行的所有数据 ...
最新文章
- html点击按钮自动获取值,如何获取HTML按钮的文本值
- Vue语法学习第三课——计算属性
- 使用NPM和Nodejs编写编译工具
- MySQL统计信息收集
- cupsd进程_Linux进程基础
- shell 提取sql 的字段名表名_Mysql常用SQL语句集锦 |建议转发收藏
- linux 网络检测工具有哪些,Linux系统下常用的网络测速工具有哪些
- springboot 之 Starter
- [4G5G专题-90]:流程 - 4G LTE 专用承载建立与Qos业务:QCI、ARP、AMBR、GBR、NON-GBR
- 百度地图坐标拾取系统自定义页面
- ContextCapture User Guide V4.4.11 Welcome(Smart3D 帮助文档 第一章 欢迎)
- Linux IP代理筛选系统
- 公共数据库挖掘第一步-GEO数据库下载表达谱数据和生存数据
- 求求你别再写上千行的类了,试试 IDEA 这些牛逼的重构技巧吧!
- 广东工学院计算机教授,胡晓敏(广东工业大学计算机学院副教授)_百度百科...
- 美国交通事故分析(2017)(项目练习_5)
- 2017年度专业技术人员资格考试时间安排
- 驻留内存 虚拟内存 共享内存
- python慢的原因
- ssd用在无盘服务器,无盘服务器用ssd