spring手动事务

Spring Data JPA手动管理事务 1、简介 通常在开发中,我们都会直接使用Spring提供的@Transactional注解来管理事务。但是在某些特殊的情况下,需要我们进行手动的事务管理。例如:将数据保存到数据库后,才能发送消息到队列中的这种情况。 Spring Data JPA中提供的方法的默认实现都自带@Transactional注解,例如SimpleJpaRepository中的实现。这就意味着,即使我们不显示的标注@Transactional,也会自动的添加事务。 @Repository // 默认添加只读事务 @Transacti 阅读详情

1.直接上实现

1.1spring的配置文件


<!-- 2.配置数据源 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!-- 事务控制 -->
    <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 事务定义有很多构造方法可以设置事务的隔离级别等等 -->
    <bean id="txDefinition" class="org.springframework.transaction.support.DefaultTransactionDefinition"></bean>

2.1java代码

    //这里是使用springmvc-mybatis的操作方法
    /**
        只需要关注事务开启就行了
        1.事务管理txManager
        2.事务定义txDefinition
        3.事务状态status
        4.进行事务回滚或者提交
    **/
    //事务管理
    @Autowired
    private DataSourceTransactionManager txManager;

    //事务定义
    @Autowired
    private DefaultTransactionDefinition txDefinition;

    @RequestMapping(value="/findorder",method=RequestMethod.GET)
    public String findOrderAndOrderDetail(HttpServletRequest request)
    {   
        //获取事务状态
        TransactionStatus status = txManager.getTransaction(txDefinition);

        Order order = ordermapper.findOrderAndOrderDetail();
        System.out.println(order.toString()+"这是订单一");
        Order order2 = ordermapper.findOrderAndOrderDetail();
        System.out.println(order2.toString()+"这是订单二");
        request.setAttribute("order", order);

        txManager.commit(status);
        return "order_detail";
    }

3.spring 的手动事务一般不怎么使用,但是也有一些特殊情况。对于理解spring的事务也有一定的帮助

利用Spring的事务模版来手动回滚事务 在spring配置文件中,配置事务模版类对应的bean 在service中使用事务模版,在需要进行事务回滚的地方,手动回滚当前事务,见如下代码 :Message msg = transactionTemplate.execute(new TransactionCallback() { @Override public Message doInTransaction(Trans 阅读详情

相关推荐

Spring 手动管理事务

import com.neo.model.pojo.product.online.ProductOnline; import com.neo.repository.product.online.ProductOnlineMapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.datasourc

After 95 1118

spring事物篇提交控制

一、MySQL数据库事务自动提交     对于mysql数据库,默认情况下,数据库处于自动提交模式。每一条语句处于一个单独的事务中,在这条语句执行完毕时,如果执行成功则隐式的提交事务,如果执行失败则隐式的回滚事务。对于正常的事务管理,是一组相关的操作处于一个事务之中,因此必须关闭数据库的自动提交模式,下面是查看方式:         查看是否自动提交命令(ON表示开启自动提交,值为1,OFF表...

追逐消失的记忆 1849

强化学习环境Gym库的介绍

Gym是一个用于进行强化学习实验的开源库,它提供了一个仿真环境,内置了多种仿真游戏,例如出租车游戏、悬崖游戏等,不同的游戏所用的网格、规则、奖励(reward)都不一样,适合为强化学习做测试。(1) 多种环境:Gym库内置了上百种实验环境,包括算法环境、简单文本环境、经典控制环境、Atari游戏环境、MuJoCo环境和机械控制环境等。(2) Gym提供多种环境供我们使用,这里以一个简单的CartPole-v0为例,首先导入gym库,然后创建一个CartPole-v0环境,通过调用gym.make方法实现。

ahah12345678的博客 2149

Spring 事务

一、Spring 事务的实现方式 二、Spring 事务的隔离级别 三、Spring 事务的传播机制

lfm1010123的博客 3093

【从零开始玩量化1】AKShare: Python开源财经数据接口库

文章目录量化的第一步:数据AKShare介绍AKShare安装AKShare使用AKTools安装/使用结语 量化的第一步:数据 想要玩量化,第一步要有数据,这个数据可能是历史交易数据、财务数据、宏观数据等等。我们最终要做的,无非就是从数据中分析出有价值的信息,以便用来指导投资策略。 在获取数据的这条道路上,我走了很多弯路,尝试了各种方法:使用Tushare到放弃、自己写网易股票页面的爬虫,自己写申万行业数据的爬虫、自己写同花顺问财的爬虫、使用聚宽的免费数据API等等,直到最终,我发现了AKShare。 A

量化投资助手的博客 5万+

cesium实战目录必看

本文作者长期从事GIS相关工作,专注于三维和地图可视化领域,熟悉Cesium、Three.js、WebGL等开发框架。文章目录展示了作者在Cesium应用中的多项技术实践,涵盖水面反射、离屏渲染、后处理效果、地形裁剪、Shader着色器、动态单体化、气象图、缓冲区域、坡度和坡向分析、三维热力图、通视分析、态势标绘等多个方面。这些内容为开发者提供了丰富的技术参考,展示了Cesium在三维可视化中的强大功能和应用场景。

God's asylum的博客 8721

【详细版】Spring 事务

Spring事务:Spring 声明式事务@Transactional使用,rollbackFor,事务的隔离级别

qq_64656621的博客 1281

【数据分析八步法】将模糊需求转化为可验证的分析问题

国内访问Huggingface官方源常遇网络问题,可通过切换国内镜像提升下载速度。三种配置方式:1)设置HF_ENDPOINT环境变量;2)在from_pretrained中直接指定镜像参数;3)修改本地Huggingface配置文件。常用镜像包括hf-mirror.com、阿里云ModelScope和清华镜像源。注意镜像同步延迟、私有模型限制,建议配合huggingface-cli工具使用,必要时取消代理设置。合理配置镜像源可显著改善Huggingface生态使用体验。

Mr数据杨 858

Spring手动开启事务提交事务

但是,有时候我们需要手动开启事务,以便更细粒度地控制事务的边界。需要注意的是,TransactionCallbackWithoutResult是一个抽象类,其中的doInTransactionWithoutResult方法是一个抽象方法,你需要在其中实现你的业务逻辑代码。通过以上的方式,你就能手动开启事务并进行事务的操作了。在Spring中,事务是通过TransactionTemplate或者注解的方式来管理的。以上两种方法都可以实现手动开启事务的功能,具体选择哪种方法取决于项目的需求和开发团队的偏好。

BUG指挥课堂 4449

Yolov8-pose关键点检测:通用倒瓶颈(UIB)搜索块结合C2f二次创新 | 轻量化之王MobileNetV4

通用倒瓶颈(UIB)搜索块结合C2f二次创新

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 614

MacBook M芯片第二篇:Homebrew安装

Homebrew是MacOS/Linux平台的软件包管理工具,提供便捷的安装、卸载、更新等功能。

码农魏轩 895

【 Spring 事务 】

如果我仅仅只是开启了事务,而不进行提交事务或回滚事务,这时我的操作也会达到回滚的效果。因为当你没有使用 commit 提交事务时,系统会认为没有提交事务,业务操作会自动回滚,因此数据不会持久化,这是一种保护机制,避免误提交!● 脏读:⼀个事务读取到了另⼀个事务修改的数据之后,后⼀个事务⼜进⾏了回滚操作,从⽽导致第⼀个事务读取的数据是错误的。设置事务的隔离级别是⽤来保障多个并发事务执⾏更可控,更符合操作者预期的,为了防⽌其他的事务影响当前事务执⾏的⼀种策略。将事务提交的代码注释掉,添加事务回滚代码。

qq_64317046的博客 1283

ZYNQ PL通过EMIO ETHE1外接PHY由GMII转RGMII

1,设置EMIO方式引出ETHE1 2,从GMII过度到RGMII GMII: 发送 gmii_tx_clk gmii_tx_d[7:0] gmii_tx_en gmii_tx_er 接收 gmii_rx_clk gmii_rx_d[7:0] gmii_rx_dv gmii_rx_er RGMII: 发送 tx_clk tx_d[3:0] tx_ctrl 接收 rx_clk rx_d[3:0] rx_ctrl 首先数据总线从时钟单边沿采样8bit转变为了双边沿采样4bit,从88E1

wangjie36的博客 1万+

spring手动开启事务,手动提交事务,手动回滚事务

1.未加事务注解(或者事务配置), 所以需要手动开启事务和手动提交事务和手动回滚事务 @Autowired private PlatformTransactionManager txManager; @Autowired private ShopGroupBuyDao shopGroupBuyDao; @GetMapping(value = "/transactionDemo") public void ceshi() { // 手动开启事务 start De

小林子的博客 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

spring手动控制事务开启_手动控制spring事务

用spring的时候,什么时候需要手动控制事务?在方法前加@Transaction不行么?有这么一种场景,用户在web页面点击一个按钮,后台需要几分钟或几小时的长时间执行一段程序。这时如果页面不响应,用户感觉就一直卡在这里了。一种方法是起一个线程来跑这个程序,让请求立即返回。但这与我们平时的代码不太一样。平时的代码如果有事务直接放在Service的方法上就行了,再这个真正的执行是在一个线程里。而这...

weixin_29605669的博客 4235

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

spring中手动提交事务及事务原理

spring中手动提交事务分为六步: 1、添加依赖,sprongboot 会默认开启事务管理 org.springframework.boot 和 spring-boot-starter-jdbc 2、在需要的服务类里引入bean @Autowired DataSourceTransactionManager dataSourceTransactionManager; @Autowired TransactionDefinition transactionDefinition; 3、手..

fwk_love的博客 3507

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Spring手动提交事务

Spring事务的手动提交 事务背景: Spring事务开启,常见的可以用基于注解的方式进行: @Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW) 手动进行Sring事务的提交 import org.springframework.jdbc.datasource.DataSourceTransactionManager; import org.springframewor

stubbornTu的博客 4527

Spring+Mybatis 手动控制事务

Spring+Mybatis 手动控制事务背景&amp;amp;问题解决方案代码参考文章 背景&amp;amp;问题 在【财务资金指标录入】项目中,由于对数据库的“修改”操作较为复杂,一条sql语句无法完成整个操作,所以需要在ServiceImpl中人为控制事务的提交和回滚,以保证数据库数据的准确性和一次数据库写操作的原子性。 解决方案 在ServiceImpl中注入Spring框架提供的 DataSourc...

小泰迪的博客 8063

spring手动控制事务

实际项目中要实现spring的事务大多数我们都是使用 @Transactional(rollbackFor = Exception.class) 注解即可,但是有些业务场景需要我们手动处理事务我们就可以这样: //开启事务 DefaultTransactionDefinition defaultTransactionDefinition = new DefaultTransactionDefinition(); // 嵌套事务 defaultTransactionDefinition.setPropag

lockie的博客 4683

@Transactional注解管理事务和Spring手动提交事务(二)

使用 Spring 注解管理事务概述@Transactional 注解简介使用 @Transaction 注解 概述 通过 @Transactional 注解方式,也可将事务织入到相应方法中。而使用注解方式,只需在配置文件中加入一个 tx 标签,以告诉 Spring 使用注解来完成事务的织入。该标签只需指定一个属性,事务管理器。 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.or

输入技术、输出想法 9928

Spring 手动提交事务

在使用Spring声明式事务时,不需要手动的开启事务和关闭事务,但是对于一些场景则需要开发人员手动的提交事务,比如说一个操作中需要处理大量的数据库更改,可以将大量的数据库更改分批的提交,又比如一次事务中一类的操作的失败并不需要对其他类操作进行事务回滚,就可以将此类的事务先进行提交,这样就需要手动的获取Spring管理的Transaction来提交事务。 1、applicationContex

AlbenXie的博客 1万+

java 手动提交事务_spring手动提交处理事务

spring手动提交处理事务:今天在弄多数据源手动提交事务的时候,找到这篇文章,写的不错,值得参考,但是要注意的是,这里是不支持多数据事务的,多数据源的事务最好还是交给spring来管理,因为不同数据库直接是无法统一事务。但是这个做为单个的事务控制还是很不错的,谢谢大佬的文章配置文件:class="org.springframework.jdbc.datasource.DataSourceTran...

weixin_36271649的博客 3054

spring手动使用事务

spring项目手动控制事务(非分布式事务) 先上代码: @Autowired private PlatformTransactionManager platformTxManager ; @RequestMapping("/testPlatformTransactionManager ") public int testPlatformTransactionManager (){ DefaultTransactionDefinition txDefinition = new Default.

b13001216978的博客 1070

spring手动控制事务开启_Spring+Mybatis 手动控制事务

@OverridepublicbooleantestDelete(StringjobCode)throwsException {booleanflag=false;//1.获取事务控制管理器DataSourceTransactionManagertransactionManager= HqznContext.getBean("transactionManager", DataSourceTrans...

weixin_35962351的博客 491

手动实现 spring 事务

手动实现 spring 事务 手动实现 spring 事务替换 @Transactional ## 自定义注解 @Target({ ElementType.METHOD }) @Retention(RetentionPolicy.RUNTIME) public @interface ExtTransaction { } TransactionUtils // 编程事务(需要手动begin 手动回滚 手都提交) @Component @Scope("prototype") // 每个事务都是新的实例 目的

yangsen159的博客 899
上一篇: struts2之文件上传
下一篇: mybatis的缓存机智
cst_code
博客等级 码龄10年 4粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值