Spring事务

事务的ACID特性

原子性(Atomicity):在事务中的操作,要么都执行,要么都不执行!

一致性(Consistency):数据从一种状态,同时到达另一种状态。

持久性(Durability):数据一旦提交,对数据库的影响是永久的。

隔离性(Isolation):事务之间是相互独立存在的。

事务创建的原则:

  1. 事务尽可能简短:

因为启动事务之后,数据库管理系统需要保留大量资源来保证事务的ACID!

如果是多用户的系统,那么回严重影响系统的性能。

  1. 事务中访问的数据量小:

在并发情况下,执行事务,事务的访问量尽量小,各个线程之间对数据的争夺就越小。

  1. 查询时尽量不使用事务:

因为查询不会修改数据。

  1. 在事务处理过程中,尽量不要出现用户等待的情况!

如果等待时间过长,占用资源太久,有可能会造成系统阻塞!(可以设置事务的超时时间)

Spring事务的管理实现

01.使用spring的事务工厂

02.使用spring的注解    (常用)

03.使用aspectJ 的AOP配置         (常用)

Spring事务中两个属性

Isolation :事务的隔离级别

01. default :采用数据库默认的事务隔离级别

Mysql :repeatable-read (可重复读)

Oracle :read-committed(读提交)

02. repeatable-read(可重复读):解决了脏读和不可重复读,但是可能发生幻读。

03. read-committed(读提交);解决了脏读,但是没有解决不可重复读和幻读。

04. read-uncommitted(读未提交):什么问题都没解决,最垃圾

05. serializable (串行化):级别最高,效率最低,彻底解决并发的问题。

propagation: 事务的传播行为:一共7中方式!

01.required:是spring默认的事务传播行为!

指定的方法必须在事务中执行!如果没有事务,则会自动创建一个事务!

02.supports:有事务就在事务环境下执行,没有事务就直接执行!

03.mandatory:指定的方法必须在事务中执行!如果没有事务,则抛出异常!

04.requires_new:总是新创建一个事务!

如果当前方法存在事务,则把当前的事务挂起,直到新创建的事务执行完毕后执行!

05.not_supported:指定的方法不能在事务中执行!如果当前方法存在事务,则把当前的事务挂起!

06.never:指定的方法不能在事务中执行!如果当前方法存在事务,则抛出异常!

07.nested:指定的方法必须在事务内执行!

如果执行的方法没有事务,则会创建一个事务!

如果执行的方法没有事务,则会嵌套执行!

timeout_default:定义了事务默认的超时时间!

Spring事务管理的接口:PlatformTransactionManager

常用的两个实现类:

01.使用jdbc和MyBatis时     使用DataSourceTrancationManager

02.使用hibernate时              使用HibernateTrancationManager

Spring事务回滚的方式:

默认的回滚方式--》发生运行时异常回滚!发送受查异常时提交!

受查异常肯定需要我们手动的设置回滚方式!

运行时异常严重!一旦发生,JVM中止执行!

实现自定义异常类!RuntimeException -->  Exception --->  Throwable

Spring——事务的更多相关文章

  1. spring事务概念理解

    1.数据并发问题 脏读 A事务读取B事务尚未提交的更新数据,并在此数据的基础上操作.如果B事务回滚,则A事务读取的数据就是错误的.即读取了脏数据或者错误数据. 不可重复组 A事务先后读取了B事务提交[ ...

  2. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  3. Spring事务

    1.@Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能.@Transactional 的 ...

  4. spring事务管理器设计思想(二)

    上文见<spring事务管理器设计思想(一)> 对于第二个问题,涉及到事务的传播级别,定义如下: PROPAGATION_REQUIRED-- 如果当前没有事务,就新建一个事务.这是最常见 ...

  5. spring事务管理器设计思想(一)

    在最近做的一个项目里面,涉及到多数据源的操作,比较特殊的是,这多个数据库的表结构完全相同,由于我们使用的ibatis框架作为持久化层,为了防止每一个数据源都配置一套规则,所以重新实现了数据源,根据线程 ...

  6. Spring事务管理的三种方式

    一 .第一种:全注解声明式事务 Xml代码 复制代码 收藏代码 .<?xml version="1.0" encoding="UTF-8"?> .& ...

  7. spring 事务传播特性 和隔离级别

    事务的几种传播特性1. PROPAGATION_REQUIRED: 如果存在一个事务,则支持当前事务.如果没有事务则开启2. PROPAGATION_SUPPORTS: 如果存在一个事务,支持当前事务 ...

  8. Spring事务管理

    Spring是SSH中的管理员,负责管理其它框架,协调各个部分的工作.今天一起学习一下Spring的事务管理.Spring的事务管理分为声明式跟编程式.声明式就是在Spring的配置文件中进行相关配置 ...

  9. Spring事务传播属性

    Spring 对事务控制的支持统一在 TransactionDefinition 类中描述,该类有以下几个重要的接口方法: int getPropagationBehavior():事务的传播行为 i ...

  10. Spring事务属性的介绍

    Spring声明式事务让我们从复杂的事务处理中得到解脱.使得我们再也无需要去处理获得连接.关闭连接.事务提交和回滚等这些操作.再也无需要我们在与事务相关的方法中处理大量的try-catch-final ...

随机推荐

  1. mysql访问视图提示:找不到视图

    原因: 1.不存在 2.视图区分大小写(有的不区分) 3.权限问题

  2. JASPER打印单据,标签开发培训, 界面开发培训

    JASPER打印单据,标签开发培训软件:TIBC JASPER Studio.Jaspersoft Studio是一个专为JasperReports报表引擎而开发的报表设计器,是 iReport设计器 ...

  3. Masonry与AmazeUI结合实现瀑布流

    做一个图片列表展示,由于照片数量太多,决定用瀑布流来实现 由于之前没有接触过瀑布流,不知从何下手 百度一下大家都在用Masonry 官网 https://masonry.desandro.com/ 这 ...

  4. Shell 运算相关

    一.${str} 二.变量替换 三.3种计算字符串长度的效率比较 四.(())用法 五.expr 六.bc 4种连续整数求和效率 七.条件测试 八.字符串测试

  5. 第二周博客作业 <西北师范大学| 周安伟>

    一,本周助教小结 逐步开始适应助教工作,对学生发布的博客进行点评,查看学生对软件工程前期的准备情况. 二,助教本人博客 https://home.cnblogs.com/u/zaw-315/ 三,学生 ...

  6. 去除web项目中的css、js缓存

    <link rel="stylesheet" type="text/css" href="~/Content/Home.css?param=Ma ...

  7. JVM学习04:类的文件结构

    JVM学习04:类的文件结构 写在前面:本系列分享主要参考资料是  周志明老师的<深入理解Java虚拟机>第二版. 类的文件结构知识要点Xmind梳理

  8. 迁移virtualenv环境

    记录一次将window上的virtualenv部署至LINUX服务器 前提 你已经使用virtualenv创建了一个虚拟的python运行环境,并且已经完成了你的应用的开发,现在需要将工程部署到服务器 ...

  9. Retrofit 2.0 上传文件

    1.用MultipartBody.Part的方式上传文件(单文件上传)(表单方式) @Multipart @POST("xxx/xxx") Call<ResponseBody ...

  10. Security.ssl-pinning

    SSL Pinning 1. What's SSL Pinning? "SSL Pinning is making sure the client checks the server’s c ...