配置Spring JDBC的事务回滚失效

标签: spring jdbc | 发表时间:2014-09-17 02:07 | 作者:u012841509
出处:http://blog.csdn.net

今天配置Mysql DBCP连接池事务回滚失效,竟然浪费了我一下午的时间去调研,问了好多人也都没发现,最后还得靠自己,总结问题如下:


1、Mysql数据库用的是MyISAM表结构而非InnerDB(浪费了两个小时)


2、网上说的默认情况下,一个有事务方法, 遇到RuntiomeException 时会回滚 . 遇到 受检查的异常 是不会回滚 的. 要想所有异常都回滚,要加上 @Transactional( rollbackFor={Exception.class,其它异常}) 。


3、配置DBCP连接池缺少配置<property name="defaultAutoCommit" value="true" />(不知道C3P0需不需要特殊配置)。


4、@Transactional 只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能.


5、异常不能抓取,抓取了之后就需要重新抛出异常或者增加如下语句:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();


每天一点点,帮助别人的同时也在记录自己的成长~

作者:u012841509 发表于2014-9-16 18:07:17 原文链接
阅读:0 评论:0 查看评论

相关 [spring jdbc] 推荐:

spring与jdbc的结合使用

- - CSDN博客推荐文章
利用spring可以解决事务处理时的许多问题,同spring实现其他的功能相似,spring提供了两种不同的方式实现与jdbc的结合,两种方式是注解和xml配置方式. 1.   spring和jdbc的结合. 1)       建立PersonService接口:. * 得到所有的Person. 2)       编写接口的实现类,并且将该bean纳入到spring的事务管理中(通过注解方式):.

Spring对JDBC异常的封装

- - 编程语言 - ITeye博客
      Spring对JDBC异常的封装来自于《Expert One-on-One J2EE Design and Development》一书所持的观点. 书中指明jdbc使用单一java.lang.SQLException异常表示数据访问时发生的所有异常是一 个糟糕的设计. 在JDBC API 4.0以前的版本中,异常处理功能极其有限.

配置Spring JDBC的事务回滚失效

- - CSDN博客推荐文章
今天配置Mysql DBCP连接池事务回滚失效,竟然浪费了我一下午的时间去调研,问了好多人也都没发现,最后还得靠自己,总结问题如下:. 1、Mysql数据库用的是MyISAM表结构而非InnerDB(浪费了两个小时). 2、网上说的默认情况下,一个有事务方法, 遇到RuntiomeException 时会回滚.

Spring Boot 2 整合 shard-jdbc 中间件,实现数据分库分表

- - IT瘾-dev
以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中. 每个库的结构都一样;数据都不一样;. 所有库的并集是全量数据;. 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中. 每个表的结构都一样;数据都不一样;. 所有表的并集是全量数据;. 二、Shard-jdbc 中间件. 1)、Sharding-JDBC直接封装JDBC API,旧代码迁移成本几乎为零.

HA-JDBC -

- -
The state manager component is responsible for storing the active status of each database in the cluster, as well as any durability state.

裴东辉-Spring集成HikariCP(另外一款高性能的 JDBC 连接池) - 裴东辉

- - 博客园_首页
HikariCP简介( http://brettwooldridge.github.io/HikariCP/):. 一、项目整体布局(为了区分HikariCP依赖的jar包,jar包都以Hikari-1.3.8-为前缀). 二、测试的类,HikariCPSpring.java. 三、日志打印文件,log4j.properties.

JDBC性能小贴

- - 开源软件 - ITeye博客
本文收集了一些用于提升JDBC性能的方法. Java应用或者JavaEE Web应用的性能是很重要的,尤其是数据库后端对应用的性能影响. 不知你是否经历过Java、JavaEE web应用非常慢的案例没有(处理一个简单的请求都要花上好几秒的时间用于数据库访问,分页、排序等). 下面这些贴士也许能提升Java应用的性能.

oracle的jdbc驱动

- - Oracle - 数据库 - ITeye博客
oracle的jdbc驱动主要有下面三类:.   1、JDBC OCI: oci是oracle call interface的缩写,此驱动类似于传统的ODBC 驱动. 因为它需要Oracle Call Interface and Net8,所以它需要在运行使用此驱动的JAVA程序的机器上安装客户端软件,其实主要是用到orcale客户端里以dll方式提供的oci和服务器配置.

jdbc日志,Log4jbdc-remix使用

- - 企业架构 - ITeye博客
   做项目的时候给jdbc做日志,只打印出代. 由是看看有没有给jdbc做日志的框架. 找到了log4jdbc,但是觉得还不是很理想,由是又看了看,还有一个护展插件log4jdbc-remix. 先不扯这么多,先来教大家怎么使用吧. 使用这个插件依赖4个类:log4j,slf4j-log4j,slf4j-api,log4j-remix.

JDBC事务控制管理

- - 编程语言 - ITeye博客
事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 例如:A——B转帐,对应于如下两条sql语句. 数据库默认事务是自动提交的,也就是发一条sql它就执行一条. 如果想多条sql放在一个事务中执行,则需要使用如下语句. 方式一:利用SQL语句管理事务. start transaction;--开启事务,这条语句之后的sql语句将处在一个事务当中,这些sql语句并不会立即执行.