Spring编程式定义事务DefaultTransactionDefinition的问题
     @Autowired
    private DataSourceTransactionManager transactionManager;
    @Override
    public void test() {
        DefaultTransactionDefinition def=new DefaultTransactionDefinition();
        TransactionStatus transactionStatus = transactionManager.getTransaction(def);
        for(int i=1030;i<1036;i++){
            System.out.println(lowPriceGroupDao.test1(i));//更新一个值
            transactionManager.commit(transactionStatus);
        }
    }

对于一个事务来说只能调用一次commit,但是为什么第二次还可以commit成功???我是说第二次虽然报错但是还可以修改成功
org.springframework.transaction.IllegalTransactionStateException:
Transaction is already completed - do not call commit or rollback more than once per transaction

0

1个回答

spring 编程式事务

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Spring事务管理实现方式之编程式事务与声明式事务详解
1.编程式事务:编码方式实现事务管理(代码演示为JDBC事务管理) Spring实现编程式事务,依赖于2大类,分别是上篇文章提到的PlatformTransactionManager,与模版类TransactionTemplate(推荐使用)。下面分别详细介绍Spring是如何通过该类实现事务管 2.声明式事务:可知编程式事务每次实现都要单独实现,但业务量大功能复杂时,使用编程式事务无疑是痛苦的,而声明式事务不同,声明式事务属于无侵入式,不会影响业务逻辑的实现。
Spring中的声明式事务和编程式事务(@Transactional无效的七种原因及解决方案)
1、注解方式实现 在方法或者类前面加上下面注解 @Transactional(value=&amp;amp;amp;quot;transactionManager&amp;amp;amp;quot;, rollbackFor = Exception.class) 但是这种情况有弊端,因为这种方式内部是通过切面来实现的,所以当方法类不是通过spring来管理的直接类的情况下,该方法无效。 比如一个service里面有A方法和B方法,我们在另一个类里面调用...
Spring 源码 TransactionDefinition 定义(助于理解Spring事务传播,事务的隔离级别)
[code=&quot;java&quot;]/** * Interface that defines Spring-compliant transaction properties. * Based on the propagation behavior definitions analogous to EJB CMT attributes. * * Note that isolation leve...
Spring的四种事务管理(一种编程式事务+三种声明事务)<学习随笔>
Spring的4种事务管理(1种编程式事务+三种声明事务) 一、Spring事务的介绍 二、编程式事务xml的配置 注入后直接在service层调用模板的方法使用 三、基于AOP方式的声明式事务管理 prop的具体配置 使用AOP声明式事务是时service层必须注入代理类 四、基于Asp
编程式事务的实现(自定义注解版本)--springboot aop
前言:为了能更深入理解事务的机制,所以需要学习一下&quot;手动挡&quot;的事务实现原理。 其实像我们公司自己内部的框架的话,因为是向分布式架构的发展,所以dao层都是被封装成jar包引用了,内部实现spring JdbcTemplate的方式。  还有就是,dao层被封装,并且用try...catch..挡住了异常的抛出。这个时候就需要派上手动事务进行处理了。废话不说,直接干。 实现手动事务步骤:(把思...
spring事务管理(声明式事务和编程式事务)
spring的事务管理分为:声明式事务和编程式事务 spring对事务管理通常分为三部分:DataSource、TransactionManager和代理机制这三部分,无论哪种配置方式,一般变化的只是代理机制这部分。 1.spring数据源配置 * 方式1:直接在spring的配置文件(applicationContext.xml)中配置数据源
Spring编程式事务管理
在基于数据库的应用中,事务是非常重要的。为了方便使用,Spring提供了基于XML和基于注解的方式配置事务,思路都是使用AOP,在特定的切入点统一开启事务,以方法为粒度进行事务控制。并且定义了事务的传播属性,规定了配置了事务的方法互相嵌套调用时的行为准则: PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATI
Spring编程式事务的使用
引入事务管理器 @Autowired TransactionTemplate transactionTemplate; @Autowired PlatformTransactionManager transactionManager; 使用方式1 //开启事务保存数据 boolean result = transactionTemplate.execute(new Transac...
Spring编程式事务实现
编程式事务概述        所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。        Spring框架提供一致的事务抽象,因此对于JDBC还是JTA事务都是采用相同的API进行编程。   java代码: 查看复制到剪贴板打印 Connection conn = null;   UserTransaction 
Spring Mvc那点事---(32)Spring编程式事务的实现
上一节我们介绍了spring 事务中的相关接口,这一节我们看看怎么利用接口通过编程式来使用事务控制。使用TransactionTemplate来实现编程式事务控制。使用TransactionTemplate 不需要显式地开始事务,甚至不需要显式地提交事务。这些步骤都由模板完成。但出现异常时,应通过TransactionStatus 的setRollbackOnly 显式回滚事务。
Spring事务实现之编程式事务
编程式事务(TranscationTemplate)废话不多说,直接看配置文件。<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns
Spring编程式和声明式事务实例讲解
Java面试通关手册(Java学习指南):https://github.com/Snailclimb/Java_Guide 历史回顾: 可能是最漂亮的Spring事务管理详解 Spring事务管理 Spring支持两种方式的事务管理: 编程式事务管理: 通过Transaction Template手动管理事务,实际应用中很少使用, 使用XML配置声明式事务: 推荐使用(代码侵入...
深入理解TransactionTemplate编程式事务
Spring可以支持编程式事务和声明式事务。 Spring提供的最原始的事务管理方式是基于TransactionDefinition、PlatformTransactionManager、TransactionStatus 编程式事务。 而TransactionTemplate的编程式事务管理是使用模板方法设计模式对原始事务管理方式的封装。 源码探索 查看 TransactionTempla...
Spring事务管理之编程式事务场景及使用详解
问题引出: 当我在进行某一个业务开发时,需要先在主表存入一条数据逻辑上上是在主表存入一条数据以后从表再存入主表的附属信息。但是再出现运行过程中出现了异常导致主表的数据存入进去了从表却没有信息。举个例子在进行转账的时候往往会从一个账户转出一定金额到另一个账户,不允许一个人的 账户的余额已经减少了钱而另一个人的账户却没有收到转账的情况,那么再这种时候在业务层对数据库进行操作的时候就必须保证要么转成
spring 编程式事务配置
1、事务切面: package com.hibernate.util; import org.aspectj.lang.ProceedingJoinPoint; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.transaction.TransactionS...
Mybatis\Spring编程式事务管理
需求:同时有多条修改数据库操作,当一条出错,所有回滚   1、mybatis事务处理(作用于持久层,即DAO)   /** * 事务工厂接口,产生新的事务 */ TransactionFactory transactionFactory = new JdbcTransactionFactory(); SqlSession session = sqlSessionFactory...
Spring的四种事务管理(一种编程式事务+三种声明事务)
一、Spring事务的介绍二、编程式事务xml的配置注入后直接在service层调用模板的方法使用三、基于AOP方式的声明式事务管理prop的具体配置使用AOP声明式事务是时service层必须注入代理类四、基于AspectJ的声明式事务基于AspectJ的xml配置传播行为的配置五、基于注解方式的声明式事务管理在需要使用事务的类上添加注解即可 @Transactional注解方式的传播行为配置学...
springboot的编程式事务
本人在springboot项目开发中,涉及到调用第三方接口,请求第三方接口成功但返回相关交易失败的话,需要删除插入表的某条数据,或更新别表中的表状态同时记录日志等,将第三方请求的实际完成情况返回给前端,使用@Transactional注解不能满足我的需求,在某博客(忘记了)看到了该编程式事务,用起来还不错。代码如下:import org.springframework.transaction.Pl...
Transactional编程式事物——提高千倍性能问题
经常遇到的并发编程问题,有些操作数据库的代码需要加上事物,这就使得每使用一次事物就要占用一个连接,如果设置的链接池最大连接数有限,那么当并发数超过此连接数就会使得其他的操作就会宕机,报500的错误,显示超过最大连接数!其实占用连接的时间很短,因为要进行数据库操作的时间很快!所以在高并发的情况下,提高性能,那就必须使得该用事物的就用,不该用的不用,这样就会减少连接资源占用的时间!如果连接数较大,一个...
spring中使用jpa编程式事务管理
老久不玩这个了,记录下备查。去掉方法不能有Transaction注解,spring要配置个TransactionTemplate:&amp;lt;bean id=&quot;transactionTemplate&quot; class=&quot;org.springframework.transaction.support.TransactionTemplate&quot;&amp;gt; &amp;lt;property name=&quot;timeou...
springboot(17)编程式事务
@Autowired private TransactionTemplate transactionTemplate; Boolean isSuccess = transactionTemplate.execute(new TransactionCallback&amp;amp;amp;amp;lt;Boolean&amp;amp;amp;amp;gt;() { public Boolean doInTransaction(TransactionSt...
Spring事务处理-编程式事务和声明式事务
Spring框架提供编程式事务处理和声明式事务处理。 编程式事务处理就是指在业务代码中利用Spring框架提供的一些类进行事务处理。 声明式事务处理就是指在xml配置文件或注解的方式声明对某个类方法进行事务处理。 通过以上的描述可以大概知道编程式事务处理是以侵入的方式完成,代码的耦合度高一些。而声明式事务处理耦合度低,或者说基本没有耦合。 编程式事务管理是基于Spring框架底层的 API来完成的...
spring支持编程式事务管理和声明式事务管理两种方式
1、声明式事务提交,注解transaction,自动进行事务提交和回滚。    声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。2、编程式事务管理,在代码中显示进行事务提交及回滚。原文:http://blog.csdn.net/bao19901210/article/details/41724355...
SpringBoot事务管理:声明式事务和编程式事务。将Service层的事务执行结果传递出去
在SpringBoot中使用事务很简单,这一篇不是为了讲事务,主要是讲一下一个工具类,将需要加入事务的Service层代码作为参数传递出去并返回事务的执行结果(成功和回滚)。 声明式事务 在SpringBoot中声明式事务最常见,就是把需要事务的方法用@Transactional标注一下就行了,这个一般用在Service层。标注后该方法就具备了事务的能力,出错了会自动回滚。 在大部分场景下,
Spring事务管理实现方式之编程式事务与声明式事务
原创声明:该博文属于本人另一博客【http://blog.csdn.net/liaohaojian/article/details/70139151】原创作品,绝非他人转载 1.上篇文章讲解了Spring事务的传播级别与隔离级别,以及分布式事务的简单配置,点击回看上篇文章 2.编程式事务:编码方式实现事务管理(代码演示为JDBC事务管理) Spring实现编程式事务,依赖于2大类,分别是上...
事务声明声明式事务和编程式事务介绍
编程式事务:所谓编程式事务指的是通过编码方式实现事务,即类似于JDBC编程实现事务管理。管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务 :管理建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务
Spring的事务管理入门:编程式事务管理(TransactionTemplate)
转载:http://blog.csdn.net/zq9017197/article/details/6321391 Spring可以支持编程式事务和声明式事务。 Spring使用事务管理器,每个不同平台的事务管理器都实现了接口:PlatformTransactionManager 此接口是事务管理的核心,提供了三个需要实现的函数: [java] view
事务概念(ACID、事务隔离级别)与Spring事务(编程式事务、声明式事务、事务传播方式、事务实现原理、事务失效解决)
一 事务 事务的特性 事务隔离级别 二 Spring事务 Spring 编程式事务 使用方式 Spring 声明式事务 使用方式 Spring中的事务隔离级别 Spring事务的传播方式 Spring 事务实现原理 Spring 事务注意的问题 事务失效问题 一、事务 事务是指 ...
spring+mybatis事务管理(声明式+编码式)
spring事务 声明式+编码式
编程式事务和声明式事务区别
编程式事务需要你在代码中直接加入处理事务的逻辑,可能需要在代码中显式调用beginTransaction()、commit()、rollback()等事务管理相关的方法,如在执行a方法时候需要事务处理,你需要在a方法开始时候开启事务,处理完后。在方法结束时候,关闭事务.声明式的事务的做法是在a方法外围添加注解或者直接在配置文件中定义,a方法需要事务处理,在spring中会通过配置文件在a方法前后拦...
编程式事务和注解事务使用
1: @Component public class SpringContextUtil implements ApplicationContextAware { public static ApplicationContext applicationContext = null; public SpringContextUtil() { } @Suppr...
通过TransactionDefinition接口来学习spring事务的隔离级别和传播特性(4.3.4版本)
通过spring官方包中带的原代码来看spring的事务的5中隔离级别和7种传播特性;  基于4.3.4版本spring-tx-release-sources.jar的源码   源码如下: /* * Copyright 2002-2015 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not
JDBC_经典的编程式事务写法
package cn.tedu.jdbc.day02; import java.io.InputStream; import java.sql.Connection; import java.sql.SQLException; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; /* * ...
spring声明式事务管理代码示例(五种写法)
12220171030 package com.tiger.service; import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import
Spring的事务管理入门:编程式事务管理(TransactionTemplate)!!!
<br />Spring可以支持编程式事务和声明式事务。<br />Spring使用事务管理器,每个不同平台的事务管理器都实现了接口:PlatformTransactionManager<br />此接口是事务管理的核心,提供了三个需要实现的函数:<br />commit(TransactionStatus status) ; getTransaction(TransactionDefinition definition) ; rollback(TransactionStatus statu
spring编程式事务实现
演示了spring编程式事务的实现,通过TransactionTemplate模板进行事务控制
Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)
NULL 博文链接:https://quicker.iteye.com/blog/674029
Spring编程式事务与声明式事务源码分析
  最近在工作中用到了spring的事务管理功能,到项目代码中一看,有声明式的,有编程式的,比较混淆,所以对spring的事务管理做了一个简单的分析,主要回答自己一下几个问题:      1.     声明式事务怎么处理事务?      2.     编程式事务怎么处理事务?      3.     他们之间有什么关系?      4.     spring事务管理和传播特性怎么联系起...
【spring 6】Spring和Hibernate的整合:编程式事务
一、编程式事务简介 在 Spring 出现以前,编程式事务管理对基于 POJO 的应用来说是唯一选择。用过 Hibernate 的人都知道,我们需要在代码中显式调用beginTransaction()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。通过 Spring 提供的事务管理 API,我们可以在代码中灵活控制事务的执行。在底层,Spring 仍然将事务操
基于底层 API 的事务管理
在 Spring 出现以前,编程式事务管理对基于 POJO 的应用来说是唯一选择。用过 hibernate 的人都知道,我们需要在代码中显式调用beginTransaction()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。通过 Spring 提供的事务管理 API,我们可以在代码中灵活控制事务的执行。在底层,Spring 仍然将事务操作委托给底层的持久化框架
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 python基础教程编爬虫 java培训全靠编