Spring事务

事务

在软件开发领域,全有或全无的操作被称为事物(transaction)。事务允许你将几个操作组合成一个要么全部发生要么全部不发生的工作单元。

事务的特性

  • 原子性(Atomic)

事务是由一个或多个活动所组成的一个工作单元。原子性确保事务中的工作要么全部发生要么全部不发生。如果所有的活动都成功了,那么事务也就成功了,如果有任意一个活动失败,那么整个事务也就失败并且进行回滚。

  • 一致性(Consistent)

一旦事务完成(不管成功还是失败),系统必须确保他所建模的业务处于一致的状态。现实的数据不应该被损坏。

  • 隔离性(Isolated)

事务允许多个用户对相同的数据进行操作,每个用户的操作不会与其他用户纠缠在一起。因此,事务应该彼此隔离,避免发生同步读写相同数据的事情(注意的是,隔离性往往涉及到锁定数据库中的行或者表)。

  • 持久性(Durable)

一旦事务完成,事务的结果应该持久化,这样就能从任何系统的系统奔溃中回复过来。这一般会涉及将结果存储到数据库或者其他形式的持久化存储中。

Spring对事务的支持

  1. 编码式事务
    编码式事务允许用户在代码中精确定义事务的边界
  2. 声明式事务
    声明式事务(基于AOP)有助于用户将操作与事务规则进行解耦。

选择编码式事务还是声明式事务很大程度上是在细粒度和易用性之间进行权衡。当你使用编码式事务,你能够精确的控制事务的边界,他们的开始于结束取决于你的需求。

事务管理器

Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理的职责委托给 JTA 或其他持久化机制所提供的平台相关事务实现。每个事务管理器充当某一个特定平台的事务实现的门面。这是的Spring在使用事务时,几乎不用关注实际的事务实现时什么。

事务管理器
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 很多人喜欢这篇文章,特此同步过来 由浅入深谈论spring事务 前言 这篇其实也要归纳到《常识》系列中,但这重点又...
    码农戏码阅读 4,785评论 2 59
  • 事务有四个特性:ACID 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作...
    jiangmo阅读 1,253评论 0 7
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,971评论 6 342
  • 1 什么是事务 生活中关于事务有一个常见的场景,即银行用户转账。简单的讲,转账可以分为下面 2 个步骤: 查看用户...
    millions_chan阅读 617评论 0 4