Spring事务

作者: 往事随风_0817 | 来源:发表于2019-02-14 23:40 被阅读0次

容器事务

Spring事务核心接口

5c5ef4e30e946
  • JDBC事务管理器(DataSourceTransactionManager):本事务管理器是通过调用java.sql.Connection来管理事务.
  • Hibernate事务管理器(HibernateTransactionManager):本管理器将事务管理的职责委托给org.hibernate.Transaction对象来管理事务,而后者是从HibernateSession中获取到的
  • JPA事务管理器(JpaTransactionManager):通过一个JPA实体管理工厂(javax.persistence.EntityManagerFactory接口的任意实现)将与由工厂所产生的JPA EntityManager合作来构建事务
  • JTA事务管理器(JtaTransactionManager):本管理器将事务管理的责任委托给javax.transaction.UserTransaction和javax.transaction.TransactionManager对象进行事务处理

数据读取类型说明

  • 脏读

事务没提交,提前读取

  • 不可重复读

两次读取的数据不一致

  • 幻读

事务不是独立执行时发生的一种非预期现象

Spring事务属性定义

Spring事务属性是通过org.springframework.transaction.TransactionDefinition实现类来完成对事务属性的设置,
属性如下👇

  1. 传播行为
  2. 隔离规则
  3. 回滚规则
  4. 事务超时
  5. 是否只读?

事务传播行为

当事务方法被另一个事务方法调用时,必须指定事务应该如何传播,
Spring的7种传播行为如下👇

5c5ef502a4a80
事务隔离级别

隔离级别定义了一个事务可能受其他并发事务影响的程度
隔离级别分为👇

5c5ef511ce765

事务中注意的问题

  • 事务是否只读
    • 利用数据库事务的“只读”属性,进行特定优化处理
  • 注意
    • 事务的是否“只读”属性,不同的数据厂商支持不同
    • 通常而言:只读属性的应用要参考厂商的具体支持说明,比如
      Oracle的 “readOnly” 不起作用,不影响其增删改查
      MySql的 “readOnly“ 为true,只能查,增删改则出异常
  • 事务超时

    事务超时就是事务的一个定时器,在特定时间内事务如果没有执行完毕,那么就会自动回滚,而不是一直等待其结束

  • 设计事务时注意点:

    为了使应用程序很好地运行,事务不能运行太长的时间。因为事务可能涉及对后端数据库的锁定,所以长时间的事务会不必要的占用数据库资源

  • 事务回滚

默认情况下,事务只有遇到运行期异常时才会回滚,而在遇到检查型异常时不会回滚

  • 自定义回滚策略

声明事务在遇到特定的检查型异常时像遇到运行期异常那样回滚
声明事务遇到特定的异常不回滚,即使这些异常时运行期异常

相关文章

  • 关于事务的思考

    Spring对于事务的支持 Spring事务接口 Spring事务管理器 Spring并不直接管理事务,而是提供多...

  • Spring事务

    Spring 事务 分类 Spring可以支持编程式事务和声明式事务。 编程式事务 实现 Spring使用事务管理...

  • Spring中实现事务方式

    Spring 中实现事务的方式 Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务,...

  • Spring事务的传播特性引发的一场血案

    Spring事务的传播特性是对于Spring事务管理的一项特殊配置;Spring事务基于Spring AOP特性,...

  • Spring 事务实现分析

    1. Spring 事务简介 Spring 本身并不实现事务,Spring事务 的本质 还是 底层数据库 对事务的...

  • spring04

    Spring JdbcTemplate学习 Spring 声明式事务 xml配置实现 Spring 声明式事务 注...

  • 程序员之Spring

    1. Spring事务 spring的事务实现原理Spring事务将connection放入到当前线程的threa...

  • 面前温习

    Spring事务传播特性的浅析——事务方法嵌套调用的迷茫 解惑 spring 嵌套事务

  • 分布式事务(2)Spring事务

    2.1 Spring事务原理 Spring支持编程式事务和声明式事务。编程式事务就是用个事务类Transactio...

  • spring事务的实现原理

    spring实现事务的原理 Spring事务 的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring...

网友评论

    本文标题:Spring事务

    本文链接:https://www.haomeiwen.com/subject/oyjueqtx.html