文档章节

Spring事务回顾

喂码呢
 喂码呢
发布于 2017/07/27 15:04
字数 578
阅读 6
收藏 0
点赞 0
评论 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
博文 10
码字总数 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
对JDBC的支持 之 7.1 概述

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

heroShane
2014/02/27
0
0
脱离 Spring 实现复杂嵌套事务,之六(NOT_SUPPORTED - 非事务方式)

本文是<实现 Spring 的事务控制>系列文章中一篇。本文假设读者已经阅读并理解《实现 Spring 的事务控制,之一(必要的概念)》文中所涉及的概念(当前连接、引用计数),以及数据库连接的(n...

哈库纳
2014/02/17
0
8
学习Spring框架等技术的方向、方法和动机

学习Spring框架 最早学习Spring框架是在大二的时候,当时看了几本书,看了一些视频,主要是传智播客的。更多的,还是写代码,单独写Spring的,也有与Struts和Hibernate等框架整合的。很久以来...

jtn
2015/04/13
0
0
Spring(一)——总体介绍

工作闲着,快速回顾一下spring框架。Spring框架,是进行对象管理,对象关联,解耦的一个中间层框架。SSH(Struts+Spring+Hibernate)三大Spring在中间就起着一个承上启下的作用。好,首先我们...

凡尘里的一根葱
2015/11/10
0
0
SSH框架之Spring4专题4:Spring与DAO

本专题内容主要包含两部分:Spring所使用的操作数据库的技术之一,JDBC模版的使用;另一部分则为Spring对于事务的管理。 Spring与Dao部分,是Spring的两大核心技术loC与AOP的经典应用体现: ...

糖醋白糖
06/26
0
0
REST微服务的分布式事务实现-分布式系统、事务以及JTA介绍

事务,是操作数据库中的数据的逻辑单元。在处理一个业务过程中,事务保证多个数据修改的操作,要么都修改成功,要么都失败。同时,几个事务之间又相互独立,不会相互影响。 在这篇文章中,我...

tyou
2017/11/07
0
0
Spring AOP 日志拦截器的事务管理

如果要在方法执行前或后或抛出异常后加上一个自己的拦截器,或者一个环绕拦截器,在拦截器中执行一些操作,比如执行一些数据库操作,记录一些信 息,这些操作通过调用一个服务类的方法来执行...

哲别0
05/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
31分钟前
9
3
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0
[机器学习]回归--Decision Tree Regression

CART决策树又称分类回归树,当数据集的因变量为连续性数值时,该树算法就是一个回归树,可以用叶节点观察的均值作为预测值;当数据集的因变量为离散型数值时,该树算法就是一个分类树,可以很...

wangxuwei
昨天
1
0
Redis做分布式无锁CAS的问题

因为Redis本身是单线程的,具备原子性,所以可以用来做分布式无锁的操作,但会有一点小问题。 public interface OrderService { public String getOrderNo();} public class OrderRe...

算法之名
昨天
11
0
143. Reorder List - LeetCode

Question 143. Reorder List Solution 题目大意:给一个链表,将这个列表分成前后两部分,后半部分反转,再将这两分链表的节点交替连接成一个新的链表 思路 :先将链表分成前后两部分,将后部...

yysue
昨天
1
0
数据结构与算法1

第一个代码,描述一个被称为BankAccount的类,该类模拟了银行中的账户操作。程序建立了一个开户金额,显示金额,存款,取款并显示余额。 主要的知识点联系为类的含义,构造函数,公有和私有。...

沉迷于编程的小菜菜
昨天
1
0
从为什么别的队伍总比你的快说起

在机场候检排队的时候,大多数情况下,别的队伍都要比自己所在的队伍快,并常常懊悔当初怎么没去那个队。 其实,最快的队伍只能有一个,而排队之前并不知道那个队快。所以,如果有六个队伍你...

我是菜鸟我骄傲
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部