12Spring的事务处理二

Spring事务传播行为-编程式事务 Spring事务传播行为编程式事务 阅读详情

Spring的持久层封装

传统的JDBC数据访问技术的一般流程是:

获取数据源

根据数据源获取链接

设定事务开始

执行相应的操作

最后执行成功则提交

执行失败则回滚

分布式事务处理——分布式事务处理即事务分布在多个资源上、由多个组件共享的事务,其特点:

         组件在同一原子操作(原子性)中同多个资源通信。

         多个组件要在同一原子操作中操作。

         分布式事务需要多个不同的事务管理器的合作。

Spring提供了编程式事务处理以及声明式事务处理。

——spring的事务处理基于动态AOP实现。

         默认情况下,使用java的动态代理,但是因为必须实现一个接口,所以对于没有实现接口的javaBean,spring通过CGLIB实现。

Spring的事务中心接口是org.springframework.transaction.PlatformTransactionManager.class。

里面有三个方法:

1.获取当前事务对象

TransactionStatusgetTransaction(TransactionDefinitiondefinition)throwsTransactionException;

2.提交事务 2

   voidcommit(TransactionStatusstatus)throwsTransactionException;

3.事务回滚

voidrollback(TransactionStatusstatus)throwsTransactionException;

TransactionManager就是该接口的一个实现类。

TransactionDefinition也是一个接口其中定义了事务处理的部分属性定义。

intgetPropagationBehavior();——获取事务的传播性

intgetIsolationLevel();——获取事务的隔离层次

intgetTimeout();——获取事务是否超时

booleanisReadOnly();——获取是否为只读事务

StringgetName();——获取事务名称

 

interfaceTransactionStatusextendsSavepointManager,Flushable

 

代表了目前的事务,可以通过setRollbackOnly()来设定只读事务。

booleanisNewTransaction();

判断是否为一个新事务

 

 

booleanhasSavepoint();

判断有无保存点

 

voidsetRollbackOnly();

设为只读事务

booleanisRollbackOnly();

判断是否为只读事务

   voidflush();

刷新事务

   booleanisCompleted();

判断事务是否完成

编程式事务管理

TransactionTemplate能够以编程方式实现事务管理,其无状态切线程安全,其实例需要PlatformTransactionManaer的实例。

TransactionTemplate类继承了DefaultTransactionDefinition(默认事务定义)类,同时实现了TransactionOperations接口(事务操作)和InitializingBean接口。

该类的实例需要提供一个PlatformTranactionManager接口的一个实例对象。

PlatformTranactionManager实例对象可以通过构造方法传入。

两种构造方法。

之后其提供了三个方法。
1.执行完毕后调用的方法

2.执行事务处理的方法

3.发生异常时rollback的方法

使用TransactionTemplate比较简单,因为其实只需要调用execute方法就可以。

声明式事务管理

——spring的事务处理基于AOP实现,所以需要使用aopalliance.jar和cglib-nodep.jar包。

//Spring的声明式事务处理同样需要一个PlatformTransactionManager的一个实例。

数据源——数据源事务管理类——声明式事务管理

 

!!

若事务操作比较少,使用编程式事务管理,比较多使用声明式事务管理。

 

声明式事务管理可以使事务处理同业务逻辑分离。

 

 

(十二)Spring事务处理 - 事务处理的实现 在Spring的事务处理中,通用的事务处理流程框架是由抽象事务管理器AbstractPlatformTransactionManager来提供,而具体的底层事务处理实现,由PlatformTransactionManager的具体实现类来实现,如 DataSourceTransactionManager 、JtaTransactionManager和 HibernateTransactionMan 阅读详情

相关推荐

告别编译报错!手把手教你用VS2022命令行编译curl静态库(附完整测试代码)

本文详细介绍了如何在VS2022环境下通过命令行编译curl静态库,从环境准备、编译实战到项目集成,提供了完整的避坑指南和测试代码。特别针对常见的编译报错如LNK2019等给出了具体解决方案,帮助开发者高效完成网络库的静态编译与集成。

weixin_42557803的博客 447

Spring的事务处理之编程式事务处理

[Java] view plaincopy package org.springframework.transaction.support;      import org.apache.commons.logging.Log;   import org.apache.commons.logging.LogFactory;      import org.s

kalman2008的技术专栏 515

AI人工智能全模态大模型架构:推动智能交通发展的架构设计

本文旨在阐述全模态大模型在智能交通领域的架构设计原理和应用方法。我们将探讨如何利用多模态AI技术解决交通流量预测、事故预警、路线优化等关键问题。文章将从基础概念入手,逐步深入技术细节,最后探讨实际应用和未来发展方向。全模态大模型:能够处理和理解多种数据模态(如图像、文本、语音等)的大型AI模型智能交通系统(ITS):利用先进技术优化交通流量和安全性的综合系统多模态融合:将不同数据源的信息整合处理的技术核心概念回顾全模态大模型是能够处理多种数据类型的强大AI系统。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 834

spring framework-事务

前言

ssehs的博客 489

第12步 支持向量机(SVM)

搭建SVM

Jet4505的博客 1051

【知识分享】单端到混合S参数转换指南

信号完整性(SI)工程师几乎总是必须使用S参数,因为许多的高速接口和行业标准都正在转向串行链路架构,并使用基于S参数测量的频域限制指标,了解其工作过程将会很有意义。

一只豌豆象的博客 1579

TransactionTemplate编程式事务

TransactionTemplate学习相关记录

lyh59的博客 1万+

华为OD机试 - 商品推荐多属性排序 - 数组(Python/JS/C/C++ 双机位A卷 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。双十一来临,小王准备买某个购物平台买坚果。在输入坚果时,页面默认按照综合推荐列表。小王想知道这个综合排序时如何完成的,于是便开始思考算法题。经过一番操作后,完成它的多个关键词排序算法。希望你给小王提供一份正确的排序结果,验证其实现算法结果的准确性

学Java,找哪吒 622

Spring事务(五、源码详解)

之前说到了“编程式事务管理”以及“声明式事务管理”,下面我们来分析一下这两个Spring实现原理以及看下源代码 编程式事务管理 编程式事务管理调用了TransactionTemplate。那就从这里入手 看下TransactionTemplate的继承结构: 可以看到继承了DefaultTransactionDefinition类,同时实现了TransactionOperations 以及 In...

都让你们叫老了的博客 1022

YOLO车辆测距、车辆识别与单目测距

YOLO(You Only Look Once)是一种实时物体检测系统,能够识别视频或图像中的多个对象,并确定其位置。结合车辆识别与单目测距技术,YOLO可以用于交通监控、自动驾驶等应用场景,通过单个摄像头实现车辆的识别与距离测量。YOLO结合单目测距技术,在多个应用领域展现出巨大的潜力与灵活性。其实时性和准确性为智能交通、自动驾驶等领域提供了强有力的技术支持。

走向CTO的路上... 1675

国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

从板子整体角度来看,这是一款国产化程度很高的板子,从主控FPGA,到JTAG芯片,存储芯片、电源芯片等,都是使用的国产半导体公司的产品。板子整体尺寸也比较迷你,属于小而美类型的,可以认为是一款FPGA核心板,当然也预留了排针接口,给用户足够的扩展空间。对于想了解高云小蜜蜂SoC软硬件开发,以及对云源软件、MCU开发环境做个深度评测来说足够了。JTAG调试器固件可以增加虚拟串口功能,对于板子本来来说面积不会有改动,只需要添加两根信号线即可。

whik1194的博客 6396

Spring AOP事务处理

4.1Spring 中事务简介 4.1.1事务定义 事务(Transaction)是一个业务,是一个不可分割的逻辑工作单元,基于事务可以更好的保证业务的正确性。 4.1.2事务特性 事务具备ACID特性,分别是: 原子性(Atomicity):一个事务中的多个操作要么都成功要么都失败。 一致性(Consistency):(例如存钱操作,存之前和存之后的总钱数应该是一致的。 隔离性(Isola...

weixin_43694465的博客 3431

14、方法论 - 自顶向下与自底向上的结合

本文探讨了如何将自顶向下的规范驱动方法与自底向上的组件构建方法相结合,以形成更加全面的编程理论。通过引入代数法则,简化逻辑关系、提高代码可读性并支持形式化验证,结合实际案例(如智能家居控制系统)展示了如何在设计和实现阶段确保系统的正确性和可靠性。文章还讨论了工具支持的重要性,并提出了未来发展的方向。

lstm7chronicler的博客 173

java spring boot对mongodb做事务处理

Java Spring Boot对MongoDB的事务处理 随着微服务架构的兴起,分布式系统中的数据一致性问题变得日益重要。虽然MongoDB最初不支持多文档事务,但在4.0及以上版本中已逐步实现。Spring Boot作为Java开发中的流行框架,提供了与MongoDB的良好集成,支持开发者进行事务处理。本篇文章将介绍如...

weixin_35892779的博客 614

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Spring 事务处理

本质 事务是一组sql语句的集合,事务具有原子性(同步,即要么全部执行,要么全部不执行)、一致性(事务执行完之后表里面的约束等不变)、持久性(一旦提交不能再被撤销),隔离性(两个事物之间是隔离的,互补干扰,是通过加锁实现的)。 数据库操作最终都要使用到JDBC,那么无论上层如何封装,底层都是调用Connection的commit,rollback来完成 事务处理弊端 数据访问层(DAO)必然需要进...

bing_bg的博客 393

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Spring框架--事务处理(Spring Transaction)

创建一个maven项目

weixin_45430616的博客 413

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

(5)-Spring之事务处理的学习

事务是什么? 事务就是一组SQL语句的集合,增删改查。 事物的特点: 1、原子性(Atomicity) 指事务包含的所有操作要么全部成功,要么全部失败回滚 2、 一致性(Consistency) 一个事务执行之前和执行之后都必须处于一致性状态。 拿转账来说,假设用户A和用户B两者的钱加起来一共是5000,那么不管A和B之间如何转账,转几次账,事务结束后两个用户的钱相加起来应该还得是5000,这就是事务的一致性。 3、隔离性(Isolation) 隔离性是当多个用户并发访问数据库时,多个并发事务之间要相互隔离

cx-young的博客 246

【Spring03】Spring集成Mybatis的使用、Spring事务处理、web中使用Spring

目录集成MyBatis概述使用使用配置文件连接数据库spring事务处理概述使用说明事务隔离级别事务超时时间事务的传播行为提交、回滚事务的时机注解`@Transactional `实现事务Transactional 注解的属性aspectJ AOP管理事务web应用中使用spring 集成MyBatis 概述 将两个框架集成在一起用到的技术是:IOC 因为ioc能够创建对象,可以把mybatis框架中的对象交给spring统一创建,存放在spring中,开发人员则只需从spring中获取对象。 MyBati

博客 175

Spring的编程式事务处理

Spring的编程式事务处理(了解) 准备工作 第一步:创建工程spring_day04_tx 第二步:导入坐标 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3...

少营营的博客 394

spring framework入门(12):spring事务处理

参照:https://blog.youkuaiyun.com/chuangxin/article/details/80921704 试验目的: spring-jdbc使用方法 spring-jdbc事务实现编程式事务管理的两种方法: 1:transactionManager+JDBCTemplate 2:transactionTemplate spring-jdbc事务实现声明式事务管理的两种方法 1:xm...

火焰 293

Spring Boot整合Mybatis及事务处理

MyBatis为了方便与Spring Boot集成,专门提供了一个符合其规范的starter项目mybatis-spring-boot-starter。因此,我们只需在pom.xml添加相关依赖即可轻松集成。下面介绍了Spring Boot整合Mybatis的具体步骤以及事务使用(包含解决事务失效的坑),本项目依赖Spring Boot版本为2.X,mybatis为3.X。 1、mysql数据库...

henry的博客 6922

Spring5学习笔记(四、持久层整合与事务处理)

文章目录Spring与持久层Spring与MyBatis整合MyBatis开发步骤的回顾MyBatis在开发过程中存在的问题Spring与MyBatis整合思路分析五、事务处理六、MVC框架集成七、注解编程 Spring与持久层 Spring框架为什么要与持久层技术进行整合? JavaEE开发需要持久层进行数据库的访问操作。 JDBC、Hibernate、MyBatis进行持久开发过程存在大量的代码冗余。 Spring基于模板设计模式对于上述的持久层技术进行了封装。 Spring可以与哪些持久层技术

小楊同学的笔记本 819

Spring第四谈(spring和MyBatis的整合、spring的事务处理)

本人是一名物联网工程专业大二的学生,是互联网浪潮中一朵小小的浪花,写博客即是为了记录自己的学习历程,又希望能够帮助到很多和自己一样处于起步阶段的萌新。临渊羡鱼,不如退而结网。一起加油! 博客主页:https://blog.youkuaiyun.com/qq_44895397 Spring整合MyBatis 步骤: 1、新建maven项目 2、加入maven依赖 1)spring依赖 2)mybatis依赖 3)MySQL驱动 4)sp..

小游子YKY的博客 5045

Spring整合Mybatis以及事务处理

Spring整合框架 1、配置 1.1导入依赖关系 <!--集中定义版本h号--> <properties> <!--集中定义项目中依赖的版本号--> <druid.version>1.1.10</druid.version> <junit.version>4.12&lt...

qq_40744354的博客 369

Spring+Redis事务处理

一、概述很多数据库都涉及到事务的处理,当然Redis也有事务的处理。Redis中的事务是一组命令集合,及事务队列,队列中的命令要么全部执行,要么都不执行。这些命令是我们在调用EXEC函数后全部执行的。二、Spring中具体实现在Spring中我们要实现Redis事务,依然需要使用到RedisTemplate这个工具类。具体实现如下:ListOperations&lt;String,Object&g...

ONROAD0612的博客 1868

Spring12_Spring中的事务控制

本教程源码请访问:tutorial_demo 一、概述 之前我们学习了AOP,然后通过AOP对我们的Apache Commons DbUtils实现单表的CRUD操作的代码添加了事务。Spring有其自己的事务控制的机制,我们完全可以在项目中使用Spring自己的事务控制机制。 JavaEE体系进行分层开发,事务处理位于业务层,Spring提供了分层设计业务层的事务处理解决方案。 二、环境准备 我们之前学习了JdbcTemplate,我们的环境Dao层使用JdbcTemplate,后面三个部分的代码,都.

CodeAction的博客 147
上一篇: 11Spring的事务处理
下一篇: 13Spring的数据访问方式
Panda_IAmGoodPanda
博客等级 码龄10年 28粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值