文档章节

Spring事务回顾

喂码呢
 喂码呢
发布于 2017/07/27 15:04
字数 578
阅读 7
收藏 0

Spring 事务

————————————————————————————————————

事务的作用-ACID

将若干个数据库操作作为一个整体操作,要么全部成功要么全部失败

原子性:事务是一个不可分割的单位,要么发生,要么不发生

一致性:事务前后的数据完整性保持一致

隔离性:多个并发事务之间要保持隔离

持久性:一个事务一旦被提交,它对数据库中数据的改变是永久的

 

Spring事务管理高层抽象的3个主要接口

PlatformTransactionManager

Spring为不同的持久化框架提供了不同的Platform TransactionManager接口实现

如:

        使用Spring JDBC或iBatis进行持久化数据时使用DataSourceTransactionManager

        使用Hibernate3.0版本进行持久化数据时使用HibernateTransactionManager

 

TransactionDefinition

事务定义(属性)信息,包括:隔离级别、事务传播特性、超时、只读

事务隔离级别:

  • TransactionDefinition.ISOLATION_DEFAULT
  • TransactionDefinition.ISOLATION_READ_COMMITTED
  • TransactionDefinition.ISOLATION_READ_UNCOMMITTED
  • TransactionDefinition.ISOLATION_REPEATABLE_READ
  • TransactionDefinition.ISOLATION_SERIALIZABLE

 

事务的传播特性:

  • TransactionDefinition.PROPAGATION_MANDATORY
  • TransactionDefinition.PROPAGATION_NESTED
  • TransactionDefinition.PROPAGATION_REQUIRED
  • TransactionDefinition.PROPAGATION_NEVER
  • TransactionDefinition.PROPAGATION_NOT_SUPPORTED
  • TransactionDefinition.PROPAGATION_REQUIRES_NEW
  • TransactionDefinition.PROPAGATION_SUPPORTS

 

超时

  • TransactionDefinition.TIMEOUT_DEFAULT

 

只读

 

TransactionStatus

事务的运行状态

 

 

 

 

声明式事务

声明式事务管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。声明式事务最大的优点就是不需要通过编程的方式管理事务,这样就不需要在业务逻辑代码中掺杂事务管理的代码,只需在配置文件中做相关的事务规则声明(或通过基于@Transactional注解的方式),便可以将事务规则应用到业务逻辑中。

 

配置方式:

  • 基于<tx>和<aop>名称空间的XML配置
  • 使用TransactionProxyFactoryBean生成事务代理对象
  • 基于@Transactional注解

 

 

@Transactional注解

该注解可以用于类、接口和方法,当该注解用于类上时该类上的所有public方法都有@Transactional注解所指定的事务属性,同时我们也可以在方法使用@Transactional去覆盖类上的@Transactional

要使得@Transactional注解生效必须配置:

<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

 

编程式事务

使用TransactionTemplate将多个数据库操作封装成事务

© 著作权归作者所有

共有 人打赏支持
喂码呢
粉丝 5
博文 12
码字总数 5018
作品 0
浦东
程序员
私信 提问
Spring的事务管理难点剖析(3):事务方法嵌套调用的迷茫

Spring事务传播机制回顾 Spring事务一个被讹传很广说法是:一个事务方法不应该调用另一个事务方法,否则将产生两个事务。结果造成开发人员在设计事务方法时束手束脚,生怕一不小心就踩到地雷...

icheer
2012/07/17
0
0
Java面试分享(题目+答案)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/t4i2b10X4c22nF6A/article/details/84535277 1.说下Struts的设计模式 2.拦截器和过滤器的区别? 3.struts2框架...

JAVA高级架构v
2018/11/25
0
0
springmvc的面试知识点总结

新的一年,开启新的篇章,欧气满满,迎接未来. 前几天回顾了spring相关的知识点,现在再来回顾下springmvc相关的知识点做一下总结. 问题总结 之前面试问题总结的那篇文章中,与springmvc相关的有哪...

编辑之路
01/15
0
0
Spring编程式和声明式事务实例讲解

Java面试通关手册(Java学习指南):https://github.com/Snailclimb/JavaGuide 历史回顾: 可能是最漂亮的Spring事务管理详解 Spring事务管理 Spring支持两种方式的事务管理: 编程式事务管理...

snailclimb
2018/05/23
0
0
Spring @Async/@Transactional 失效的原因及解决方案

本来上一篇说要写关于AOP的实践的,但是这周刚好遇到了使用@Transactional和@Async的不生效的问题,这篇就进行一个回顾和记录。 之前提到实现AOP的方法有动态代理、编译期,类加载期织入等等...

陶源0111
2018/06/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式系统关注点—“无状态”详解

一、初识“状态” 我们首先举个例子。 开发 Z 哥对运维 Y 弟喊:“Y 弟,现在系统好卡,刚上了一波活动,赶紧帮我加几台机器上去顶一下。” Y 弟回复说:“没问题,分分钟搞定”。 然后就发现...

微笑向暖wx
12分钟前
0
0
js获取客户端本地ip

使用js获取客户端本地ip,不需要额外引入别的文件 【注:若IE浏览器不进行安全设置,IE浏览器会默认拦截ActiveX控件的使用,将不会返回客户端的IP地址】 下边的代码使用于通用浏览器,但是IE浏...

青衫旧巷
15分钟前
0
0
第四篇:springboot 打成jar包运行

打包成jar包,需要增加maven依赖         <build>            <plugins>                <plugin>                    <groupId>org.spri...

嘴角轻扬30
26分钟前
1
0
scala学习(二)

scala使用 参数类型推断: eclipse集成scala插件: 一些有用的高阶函数: 闭包: 柯里化: indexOf: 集合操作: 不可变的集合: 不可变集合的hashCode,集合改变之后hashCode也会改变: 搞两...

柠檬果过
29分钟前
1
0
VSCode 中支持 .dwt 等文件高亮渲染代码提示方法

点击菜单 文件->首选项->设置 输入如下代码: "files.associations": { "*.dwt": "html"}

晚风0623
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部