Spring3.2.9 + JdbcTemplate 事务

XML新增声明式事务配置

<!-- 事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!-- 开启事务注解驱动 -->
    <tx:annotation-driven />

Service方法使用@Transactional标注:

@Transactional
    public void changeAge(String fromUser, String toUser, int age) {
        testDao.addAge(fromUser, age);

        int a = 1 / 0;

        testDao.addAge(toUser, 0 - age);

    }
时间: 2024-10-08 23:20:06

Spring3.2.9 + JdbcTemplate 事务的相关文章

spring jdbcTemplate 事务,各种诡异,包你醍醐灌顶!

前言 项目框架主要是spring,持久层框架没有用mybtis,用的是spring 的jdbc: 业务需求:给应用添加领域(一个领域包含多个应用,一个应用可能属于多个领域,一般而言一个应用只属于一个领域),要求是给应用添加领域的时候,先将该应用已有的领域都删除,之后再将选中的领域添加到数据库: 为了减少准备工作,我利用了以前的代码和数据建模,那么就成了:添加person的时候先删除已存在name为新添加person的name的person,再添加新person,说直白点就是:添加name为zha

Spring3声明式事务处理事务无法回滚rollback分析(annotation与xml配置混用)

新项目试运行,DBA提示生产数据库一个表的事务20分钟都未提交,分析过程如下: 1.查看日志log文件,最近20分钟是否有error日志: 2.发现某表有insert错误日志,初步判断由该表插入异常,并且未做rollback操作: 3.查看代码:该表的操作DAO.Service,事务处理为Spring的声明式事务处理,并控制到Service层: 4.场景还原: 打开Spring的debug日志(查看数据库conn打开.commit.rollback必须启用debug) 模拟插入异常数据 打断点测

【Spring】事务(transactional) - REQUIRES_NEW在JdbcTemplate、Mybatis中的不同表现

环境 数据库: oracle 11g JAR: org.springframework:spring-jdbc:4.3.8.RELEASE org.mybatis:mybatis:3.4.2 概念 REQUIRED(默认): 表示当前方法必须运行在事务中.如果当前事务存在,方法将会在该事务中运行.否则,会启动一个新的事务. REQUIRED_NEW: 表示当前方法必须运行在它自己的事务中.一个新的事务将被启动,如果存在当前事务,在该方法执行期间,当前事务会被挂起. 早前对NEW的理解只是停留在:

JdbcTemplate操作数据库

1.JdbcTemplate操作数据库 Spring对数据库的操作在jdbc上面做了深层次的封装,使用spring的注入功能,可以把DataSource注册到JdbcTemplate之中.同时,为了支持对properties文件的支持,spring提供了类似于EL表达式的方式,把dataSource.properties的文件参数引入到参数配置之中,<context:property-placeholder location="classpath:jdbc.properties"

Spring基于注解TestContext 测试框架使用详解

概述 Spring 2.5 相比于 Spring 2.0 所新增的最重要的功能可以归结为以下 3 点: 1.基于注解的 IoC 功能:  2.基于注解驱动的 Spring MVC 功能:  3.基于注解的 TestContext 测试框架. Spring 推荐开发者使用新的基于注解的 TestContext 测试框架,本文我们将对此进行详细的讲述. 低版本的 Spring 所提供的 Spring 测试框架构在 JUnit 3.8 基础上扩展而来,它提供了若干个测试基类.而 Spring 2.5

被spring和hibernate4逼疯

spring3.1整合hibernate4,事务都配置上了的,但getCurrentSession()仍然获得不到 以下是各配置 web.xml ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 6

杂谈篇之我是怎么读源码的,授之以渔

前言 开心一刻 今天上课不小心睡着了,结果被老师叫起来回答问题,这是背景.无奈之下看向同桌寻求帮助,同桌小声说到选C,结果周围的人都说选C,向同桌投去一个感激的眼神后大声说道选C.刚说完教室就笑开了,老师一脸恨铁不成钢的表情说选你个头,我叫你翻译文言文你选C!你出去,你给我出去.看着同桌挤眉弄眼的表情,劳资真想说,这帮畜生 路漫漫其修远兮,吾将上下而求索! github:https://github.com/youzhibing 码云(gitee):https://gitee.com/youzh

阿里九年架构师教你如何学会阅读源码

读源码的经历 刚参加工作那会,没想过去读源码,更没想过去改框架的源码:总想着别人的框架应该是完美的.万能的,应该不需要改:另外即使我改了源码,怎么样让我的改动生效了? 项目中引用的不还是没改的jar包吗.回想起来觉得那时候的想法确实挺-- 工作了一年多之后准备跳槽了,开始了一轮的面试,其中有几个面试官就问到了相关的源码问题:ArrayList.HashMap的底层实现,spring.mybatis的相关源码.问源码的面试一般就是回去等消息,然后就没然后了. 那时候开始意识到,源码这东西在之前的工

杂谈篇之我是怎么读源码的

读源码的经历 刚参加工作那会,没想过去读源码,更没想过去改框架的源码:总想着别人的框架应该是完美的.万能的,应该不需要改:另外即使我改了源码,怎么样让我的改动生效了? 项目中引用的不还是没改的jar包吗.回想起来觉得那时候的想法确实挺…… 工作了一年多之后准备跳槽了,开始了一轮的面试,其中有几个面试官就问到了相关的源码问题:ArrayList.HashMap的底层实现,spring.mybatis的相关源码.问源码的面试一般就是回去等消息,然后就没然后了. 那时候开始意识到,源码这东西在之前的工