Spring事务

1、什么是事务?

事务是指逻辑上的一组操作,这组操作要么全部成功,要么全部失败。

2、事务的特性

①原子性:指事务的操作要么全部都发生,要么都不发生。
②一致性:指事务执行前后数据的完整性必须保持一致。
③隔离性:指多个事务并发访问数据库时,一个用户的事务不能被其他用户的事务所干扰,多个并发事务之间数据要相互隔离(可以通过设置事务的隔离级别解决,后续会讲到)。
④持久性:指一个事务一旦被提交,它对数据库中的数据的改变是永久性的,即使数据库发生故障也不应该对其有任何影响。

3、Spring事务管理器

Spring事务管理器高层抽象接口主要有3个接口
①PlatformTransactionManager(平台事务管理器):主要是进行事务的提交回滚等功能。
②TransactionDefinition(事务定义信息):主要包含事务的隔离级别、传播行为、是否超时等。
③TransactionStatus(事务具体运行状态):包括事务是否已提交、是否是新创建的事务、是否有保存点等。

4、PlatformTransactionManager接口

根据不同的持久化框架提供了不同的PlatformTransactionManager接口实现:
①使用Spring JDBC或iBatis
org.springframework.jdbc.datasource.DataSourceTransactionManager
②使用Hibernate3.0版本
org.springframework.orm.hibernate3.0.HibernateTransactionManager

5、TransactionDefinition接口

若不考虑事务的隔离性,会引发安全问题如下:
①脏读:一个事务读取了另一个事务改写但还未提交的数据,如果这些数据被回滚,则读到的数据是无效的。
②不可重复读:在同一事务中,多次读取同一数据返回的结果有所不同。
③幻读:一个事务读取了几行记录后,另一个事务插入了一些记录,在后来的查询中第一个事务就会发现有些原来没有的记录。

5.1事务的隔离级别(四种)

事务的隔离级别就是用来解决以上三种安全问题的,隔离级别从低到高有四种:
①read_uncommited:允许你读取还未提交的改变了的数据。可能会导致脏读、不可重复读、幻读。
②read_commited:允许在并发事务已提交后读。可防止脏读,但不可重复读、幻读仍可能发生。
③repeatable_read:可防止脏读、不可重复读,但幻读仍可能发生。
④serializable:完全服从ACID的隔离级别,但是速度是最慢的。
还有就是默认的default,它与你后端使用的数据库默认隔离级别一致,比如使用MySQL默认就是repeatable_read,使用Oracle默认就是read_commited。

5.2事务的传播行为(七种)

事务的传播行为主要解决的是业务层方法之间相互调用时产生的事务应该如何进行传递的问题。比如我要调用service1中的a()和service2中的b()才能完成一个业务这种情况。
①propagation_required
②propagation_supports
③propagation_mandatory
④propagation_requires_new
⑤propagation_not_supported
⑥propagation_never
⑦propagation_nested
(详细的后续再进行添加)

6、TransactionStatus接口

这里就简单列举几个常用到的方法:
boolean hasSavePoint()//事务是否有保存点;
boolean isCompleted()//事务是否已经完成了;
boolean isNewTransaction()//是不是一个新的事务。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • Spring 事务属性分析 事务管理对于企业应用而言至关重要。它保证了用户的每一次操作都是可靠的,即便出现了异常的...
    壹点零阅读 1,279评论 0 2
  • 事务概念回顾 什么是事务? 事务是逻辑上的一组操作,要么都执行,要么都不执行. 事物的特性(ACID): 原子性:...
    风平浪静如码阅读 159评论 0 0
  • 你是我的谁,我是你的谁,我们是谁的谁谁谁。这样的句型你也许常常演练,又可能很久不曾说过。但总而言之,我们需要对自己...
    嵩嵩穿着红舞鞋阅读 495评论 0 0
  • 周五莫名其妙地为一点小事弄的心情极差。 虽是小事,但为什么会一而再再而三地出现,为什么总是被忽视,这是一个人的心到...
    我在安好阅读 366评论 0 1