文档章节

Spring事务回顾

喂码呢
 喂码呢
发布于 2017/07/27 15:04
字数 578
阅读 6
收藏 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
Spring编程式和声明式事务实例讲解

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

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

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

陶源0111
06/25
0
0
day35_Spring学习笔记_03

一、事务管理 1.1、回顾事务 事务:一组业务操作ABCD,要么全部成功,要么全部不成功。 特性:ACID 原子性:整体 一致性:完成 隔离性:并发 持久性:结果 隔离问题: 脏读:一个事务读到另一...

黑泽明军
08/08
0
0
对JDBC的支持 之 7.1 概述

概述 JDBC回顾 传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示: //cn.javass.spring.chapter7. TraditionalJdbcTest @Test public void test() throws Exception { Connection co...

heroShane
2014/02/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

小论Java泛型机制

何为泛型(Generics) 面向对象编程语言的多态特性包括:任一多态(ad hoc polymorphism,又名重载)、子类型多态(subtype polymorphism,又名覆盖)以及参数多态(parameter polymorphism,...

SamYjy
16分钟前
1
0
通过JS+DIV+CSS排版布局实现选项卡效果

CSS介绍及布局特定 层叠样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。   CSS目前最新版本为CSS3,是能够真正做到...

青衣霓裳
17分钟前
2
0
看图了解RocksDB

它是一个高性能的Key-Value数据库。设计了完善的持久化机制,同时保证性能和安全性。能够良好的支持范围查询,因为K-V记录就是按照Key来排序的。 下图为写入的流程: 可以看到主要的三个组成...

许此一生
23分钟前
4
0
重磅发布!阿里云推PostgreSQL 10 高可用版

2015年,阿里云宣布正式推出RDS for PostgreSQL服务,届时,阿里云成为国内首家同时支持MySQL、SQL Server 和PostgreSQL关系型数据库的云计算服务商。 用户在云上就能享受PostgreSQL引擎带来的...

迷你芊宝宝
23分钟前
3
0
Mysql show Status参数详解

状态名 作用域 详细解释 Aborted_clients Global 由于客户端没有正确关闭连接导致客户端终止而中断的连接数 Aborted_connects Global 试图连接到MySQL服务器而失败的连接数 Binlog_cache_dis...

若杰
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部