前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring 事务(Transaction)

Spring 事务(Transaction)

作者头像
码农架构
发布2020-10-29 14:42:29
5970
发布2020-10-29 14:42:29
举报
文章被收录于专栏:码农架构码农架构

疫情期间在家重新读了《Spring in Action》,每次翻阅总有一些收获,之后在网上看了一些关于Spring事务管理的文章,感觉都没有讲全,这里就将书上的和网上关于事务的知识简要总结梳理一下

1、基本概念 |-/ 事务的目的

|-/ 事务特性(ACID)

|-/ 事务的7种传播行为

2、声明式事务

|-/ 配置方式

|-/ 实现原理

3、编程式事务

4、常见问题

|-/ 事务不生效

基本概念

1、事务的目的就是让数据资源所承载的系统状态始终处于'正确'的状态。Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作

2、事务特性(ACID) : 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)

3、事务的7种传播行为:PROPAGATION_REQUIRED、PROPAGATION_SUPPORTS、PROPAGATION_MANDATORY、PROPAGATION_REQUIRES_NEW、PROPAGATION_NOT_SUPPORTED、PROPAGATION_NEVER、PROPAGATION_NESTED

其中事务的隔离性4种隔离级别- Read Uncommitted(读取未提交内容)、Read Committed(读取提交内容)、Repeatable Read(可重读)、Serializable(可串行化);在处理事务隔离性的时候通常会遇到脏读、不可重复读、幻读现象

声明事务

1、配置方式-注解元数据驱动的声明式事务(@Transactional)、也可以采用XML元数据驱动的声明式事务

2、实现原理-Spring事务采用AOP的方式实现、PlatformTransactionManager 事务管理器实现

声明事务-XML元数据驱动的声明式事务我们可以采用基于TransactionProxyFactoryBean的配置 或者 基于<tx/>命名空间的配置、也可以基于BeanNameAutoProxyCreator的配置

编程式事务

编程式事务归纳起来具体有这么几种实现方式

1、直接使用PlatformTransactionManager 事务管理器实现来进行编程式事务管理。 2、使用框架底层API(JJDBC,Session)来进行事务控制

3、直接使用TransactionTemplate来进行编程式事务管理,TransactionTemplate的编程式事务管理是使用模板方法设计模式对原始事务管理方式的封装

4、Spring事务保存点savepoint,创建基于SavePoint的嵌套事务来实现编程式事务管理。

常见问题-/事务不生效

1、Bean是否是代理对象;

2、入口函数private 方法, final 方法 和 static 方法数据库是否支持事务(Mysql的MyIsam不支持事务);

3、切点是否配置正确;

4、如果使用了SpringMVC,SpringMVC容器有没有重复扫描;

业务代码是否吞掉异常;

5、Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚;

6、业务和事务入口是否在同一个线程里;

7、service方法中是否直接调用本类中的另一个方法

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档