了解Spring事务
一、事务概念(transaction)
指要做的或所做的事情。指访问并可能更新数据库中各种数据项的一个程序执行单元。
在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或者整个程序。
事务通常由高级数据库操纵语言/编程语言书写的用户程序的执行所引起,由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
二、特性
事务是恢复和并发控制的基本单位
4个属性ACID
- 原子性:atomicity。一个事务是一个不可分割的工作单位,要么都做、要么不做
- 一致性:consistency。事务必须是使数据库从一个一致性状态转变到另一个一致性状态。
- 隔离性:isolation。事务的执行不能被干扰。一个事务内部操作及数据对其他的“隔离",并发执行的各个事务之间不能互相干扰。
- 持久性:durability。一个事务一旦提交,他对数据库中数据的改变就应该是永久性的
三、事务类型
手动事务:此模型提供了对事务的标准控制,但它缺少一些内置于自动事务模型的简化操作。
自动事务:声明性事务指定对象如何参与事务,如何以编程方式被配置。与对象关联的事务自动流向合适的资源管理器,有的关联驱动程序在对象的上下文中查找事务,并通过分布式事务处理协调器 (DTC) 在此事务中登记。
四、Spring的事务管理
事务原本是数据库中的概念,在 Dao 层。
但一般情况下,需要将事务提升到业务层,即 Service 层。
这样做是为了能够使用事务的特性来管理具体的业务。
在 Spring 中通常可以通过以下两种方式来实现对事务的管理:
(1)使用 Spring 的事务注解管理事务
(2)使用 AspectJ 的 AOP 配置管理事务
五、相关API
事务管理器接口
PlatformTransactionManager 接口对象
主要作用:完成事务的提交、回滚及获取事务的状态信息。
- 常用的两个实现类
DataSourceTransactionManager:使用 JDBC 或 MyBatis 进行数据库操作时使用。
HibernateTransactionManager:使用 Hibernate 进行持久化数据时使用
- Spring的回滚方式
发生运行时异常和error时回滚,发生编译异常时提交
事务定义接口
TransactionDefinition ,定义了事务描述相关的三类常量:事务隔离级别、事务传播行为、事务默认超时时限,及对它们的操作
六、Spring 的事务注解
通过@Transactional 注解方式,可将事务织入到相应 public 方法中,实现事务管理。
了解Spring事务相关推荐
- (转)面试必备技能:JDK动态代理给Spring事务埋下的坑!
一.场景分析 最近做项目遇到了一个很奇怪的问题,大致的业务场景是这样的:我们首先设定两个事务,事务parent和事务child,在Controller里边同时调用这两个方法,示例代码如下: 1.场景A ...
- spring的事务隔离_再深一点:面试工作两不误,源码级理解Spring事务
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. Spring有5种隔离级别,7种传播行为.这是面试常问的内容,也是代码中经常碰到的知识点.这些知识枯燥而且乏味,其中有些非 ...
- spring上下文是什么意思_Java程序员只会CRUD连Spring事务传播机制都不懂?
AQS到底有什么用?难道就真的只是为了面试吗? 当然不是说AQS没用,如果你不是做基础架构或者中间件开发,你很难感受到AQS的威力.当然,学习很多时候,需要的是正向反馈,学了太多造火箭的东西,面试完就 ...
- Spring事务管理的底层逻辑—源码解析
本文代码为spring 5.1.2 spring是如何控制事务的提交和回滚 加上@Transactional注解之后,Spring可以启到事务控制的功能了,再正式执行方法前它会做一些操作,我们来看看 ...
- springboot 事务手动回滚_来,讲讲Spring事务有哪些坑?
来自公众号:孤独烟 引言 今天,我们接上文<面试官:谈谈你对mysql事务的认识>的内容,来讲spring中和事务有关的考题! 因为事务这块,面试的出现几率很高.而大家工作中CRUD的比较 ...
- Spring事务管理 与 SpringAOP
1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略. ...
- Spring 事务失效?看这篇文章就够了!
欢迎关注方志朋的博客,回复"666"获面试宝典 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 不知道小伙伴们有没有这样的经历,在自己开心的编 ...
- 面试官: 讲讲 Spring 事务有哪些坑?
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 引言 今天,我们来讲 Spring 中和事务有关的考题. ...
- 一文带你看懂Spring事务!
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 前言 Spring事务管理我相信大家都用得很多,但可能仅仅局限于一个@Transactiona ...
- java 封装事务_Spring之路(36)–事务很重要吗?Spring为何要封装事务?Spring事务有陷阱吗?...
可以不使用事务吗 真的遇到过开发企业应用,但是不知道啥是事务的朋友. 好吧,我始终认为抛开性能.界面.易用性等方面不说,正确性应该是一个项目最基础的要求了. 所以,凡是企业应用,正儿八经有客户的系统, ...
最新文章
- 一图看尽全生态, 2018区块链产业云图重磅发布
- linux语言换成英语,把Linux的默认语言改为英语
- keil的主要功能和作用_组合式空调机组各功能段的主要作用
- 数据库高可用架构 转载
- Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)
- 为什么有那么多人选择“人工智能”,真的有那么好吗?
- 二十三种设计模式详解
- RFC2544时延测试——信而泰网络测试仪实操
- 课题:交通标志识别——设计思路与实现步骤记录
- BUUCTF-[XMAN2018排位赛]ppap
- 物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码
- 索爱SA-K37拉杆音箱,随时随地帮你撑起一个大舞台
- Android 简单的内存管理器
- 像windows一样给Mac os重装系统
- 【AtCoder】AtCoder Grand Contest 046
- 在Matlab中绘制系统的根轨迹图
- taking address of temporary错误
- to be top。。。
- LeetCode1109之航班预订统计(相关话题:差分数组)
- 快速阅读等三种读书方法
热门文章
- matlab .vcd文件导入,DUMP VCD文件
- jQuery事件和其他方法
- github python抢票_实测两款 GitHub 开源抢票插件,所有坑都帮你踩过了
- 12306抢票插件 协议分析
- 0727Python总结-内置方法,数学模块,random随机模块,序列化模块pickle
- 扑克牌游戏java代码_java实现简易扑克牌游戏
- 用TIA Portal+S7Client暴力破解西门子S7-300/400密码
- 研究生毕业条件---小论文发表历程
- 在网页中为图片加边框
- 利用itchat搭建微信机器人详解(附三个实用示例)