什么事Spring的事务抽象

Spring的事务抽象

一致性事务模型

  • JDBC/Hibernate/MyBatis
  • DataSource/JTA

事务抽象的核心接口

PlatformTransactionManager

  • DataSourceTransactionManager
  • HibernateTransactionManager
  • JtaTransactionManager

TransactionDefinition

  • Propagation
  • lslation
  • Timeout
  • Read-only status

image

事务的传播特性

传播性 描述
PROPAGTION_REQUIRED 0 当前有事务就用当前的,没有就用新的
PROPAGATION_SUPPORTS 1 事务可与可无,不是必须的
PROPAGATION_MANDARORY 2 当前一定要有事务,不然抛异常
PROPAGATION_REQUIRES_NEW 3 无论是否有事务,都起一个新事务
PROPAGATION_NOT_SUPPORTED 4 不支持事务,按非事务方式运行
PROPAGATION_NEVER 5 不支持事务,如果有事务则抛异常
PROPAGATION_NESTED 6 当前事务就在当前事务里再起一个事务

事务隔离特性

隔离性 脏读 不可重复读 幻读
ISOLATION_READ_UNCOMMITTED 1
ISOLATION_READ_COMMITTED 2 x
ISOLATION_REPEATABLE_READ 3 x x
ISOLATION_SERLALIZABLE 4 x x x

编程式事务

TransactionTemplate

  • TransactionCallback 有返回值
  • TransactionCallbackWithoutResult 没有返回值

PlatformTransactionManager

  • 可以传入TransactionDefinition进行定义

image

声明式事务

image

基于注解的配置的配置方式

开启事务注解的方式

  • @EnableTransactionManagement

一些配置

  • proxyTargetClass
  • mode
  • order

@Transaction

  • TransactionManager
  • propagation
  • isolation
  • timeout
  • readOnly
  • 怎么判断回滚

image

posted @ 2021-08-25 19:40  吕敬瑛  阅读(56)  评论(0编辑  收藏  举报