一、事务概念(transaction)

指要做的或所做的事情。指访问并可能更新数据库中各种数据项的一个程序执行单元。
在关系数据库中,一个事务可以是一条SQL语句、一组SQL语句或者整个程序。
事务通常由高级数据库操纵语言/编程语言书写的用户程序的执行所引起,由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。

二、特性

事务是恢复和并发控制的基本单位

4个属性ACID

  1. 原子性:atomicity。一个事务是一个不可分割的工作单位,要么都做、要么不做
  2. 一致性:consistency。事务必须是使数据库从一个一致性状态转变到另一个一致性状态。
  3. 隔离性:isolation。事务的执行不能被干扰。一个事务内部操作及数据对其他的“隔离",并发执行的各个事务之间不能互相干扰。
  4. 持久性:durability。一个事务一旦提交,他对数据库中数据的改变就应该是永久性的

三、事务类型

手动事务:此模型提供了对事务的标准控制,但它缺少一些内置于自动事务模型的简化操作。
自动事务:声明性事务指定对象如何参与事务,如何以编程方式被配置。与对象关联的事务自动流向合适的资源管理器,有的关联驱动程序在对象的上下文中查找事务,并通过分布式事务处理协调器 (DTC) 在此事务中登记。

四、Spring的事务管理

事务原本是数据库中的概念,在 Dao 层。

但一般情况下,需要将事务提升到业务层,即 Service 层。

这样做是为了能够使用事务的特性来管理具体的业务。

在 Spring 中通常可以通过以下两种方式来实现对事务的管理:
(1)使用 Spring 的事务注解管理事务
(2)使用 AspectJ 的 AOP 配置管理事务

五、相关API

事务管理器接口

PlatformTransactionManager 接口对象
主要作用:完成事务的提交、回滚及获取事务的状态信息。

  1. 常用的两个实现类

DataSourceTransactionManager:使用 JDBC 或 MyBatis 进行数据库操作时使用。

HibernateTransactionManager:使用 Hibernate 进行持久化数据时使用

  1. Spring的回滚方式
    发生运行时异常和error时回滚,发生编译异常时提交

事务定义接口

TransactionDefinition ,定义了事务描述相关的三类常量:事务隔离级别、事务传播行为、事务默认超时时限,及对它们的操作

六、Spring 的事务注解

通过@Transactional 注解方式,可将事务织入到相应 public 方法中,实现事务管理。

了解Spring事务相关推荐

  1. (转)面试必备技能:JDK动态代理给Spring事务埋下的坑!

    一.场景分析 最近做项目遇到了一个很奇怪的问题,大致的业务场景是这样的:我们首先设定两个事务,事务parent和事务child,在Controller里边同时调用这两个方法,示例代码如下: 1.场景A ...

  2. spring的事务隔离_再深一点:面试工作两不误,源码级理解Spring事务

    原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享,转载请保留出处. Spring有5种隔离级别,7种传播行为.这是面试常问的内容,也是代码中经常碰到的知识点.这些知识枯燥而且乏味,其中有些非 ...

  3. spring上下文是什么意思_Java程序员只会CRUD连Spring事务传播机制都不懂?

    AQS到底有什么用?难道就真的只是为了面试吗? 当然不是说AQS没用,如果你不是做基础架构或者中间件开发,你很难感受到AQS的威力.当然,学习很多时候,需要的是正向反馈,学了太多造火箭的东西,面试完就 ...

  4. Spring事务管理的底层逻辑—源码解析

    本文代码为spring 5.1.2 spring是如何控制事务的提交和回滚 加上@Transactional注解之后,Spring可以启到事务控制的功能了,再正式执行方法前它会做一些操作,我们来看看 ...

  5. springboot 事务手动回滚_来,讲讲Spring事务有哪些坑?

    来自公众号:孤独烟 引言 今天,我们接上文<面试官:谈谈你对mysql事务的认识>的内容,来讲spring中和事务有关的考题! 因为事务这块,面试的出现几率很高.而大家工作中CRUD的比较 ...

  6. Spring事务管理 与 SpringAOP

    1,Spring事务的核心接口 Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略.  ...

  7. Spring 事务失效?看这篇文章就够了!

    欢迎关注方志朋的博客,回复"666"获面试宝典 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 不知道小伙伴们有没有这样的经历,在自己开心的编 ...

  8. 面试官: 讲讲 Spring 事务有哪些坑?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 引言 今天,我们来讲 Spring 中和事务有关的考题. ...

  9. 一文带你看懂Spring事务!

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 前言 Spring事务管理我相信大家都用得很多,但可能仅仅局限于一个@Transactiona ...

  10. java 封装事务_Spring之路(36)–事务很重要吗?Spring为何要封装事务?Spring事务有陷阱吗?...

    可以不使用事务吗 真的遇到过开发企业应用,但是不知道啥是事务的朋友. 好吧,我始终认为抛开性能.界面.易用性等方面不说,正确性应该是一个项目最基础的要求了. 所以,凡是企业应用,正儿八经有客户的系统, ...

最新文章

  1. 一图看尽全生态, 2018区块链产业云图重磅发布
  2. linux语言换成英语,把Linux的默认语言改为英语
  3. keil的主要功能和作用_组合式空调机组各功能段的主要作用
  4. 数据库高可用架构 转载
  5. Centos7下搭建LAMP环境,安装wordpress(不会生产博客,只是一名博客搬运工)(菜鸟)
  6. 为什么有那么多人选择“人工智能”,真的有那么好吗?
  7. 二十三种设计模式详解
  8. RFC2544时延测试——信而泰网络测试仪实操
  9. 课题:交通标志识别——设计思路与实现步骤记录
  10. BUUCTF-[XMAN2018排位赛]ppap
  11. 物联网平台搭建的全过程介绍(五)——基于阿里云物联网平台的Android聊天app源码
  12. 索爱SA-K37拉杆音箱,随时随地帮你撑起一个大舞台
  13. Android 简单的内存管理器
  14. 像windows一样给Mac os重装系统
  15. 【AtCoder】AtCoder Grand Contest 046
  16. 在Matlab中绘制系统的根轨迹图
  17. taking address of temporary错误
  18. to be top。。。
  19. LeetCode1109之航班预订统计(相关话题:差分数组)
  20. 快速阅读等三种读书方法

热门文章

  1. matlab .vcd文件导入,DUMP VCD文件
  2. jQuery事件和其他方法
  3. github python抢票_实测两款 GitHub 开源抢票插件,所有坑都帮你踩过了
  4. 12306抢票插件 协议分析
  5. 0727Python总结-内置方法,数学模块,random随机模块,序列化模块pickle
  6. 扑克牌游戏java代码_java实现简易扑克牌游戏
  7. 用TIA Portal+S7Client暴力破解西门子S7-300/400密码
  8. 研究生毕业条件---小论文发表历程
  9. 在网页中为图片加边框
  10. 利用itchat搭建微信机器人详解(附三个实用示例)