最近开发中用到了springjdbctemplate来持久化数据,想通过代码控制事务的回滚和提交,但是所有配置一切正常的情况下就是不能实现回滚,查看了datasource和transactionManager配置都没有问题,但是就不给回滚,手动回滚代码如下:
public void insertUser() {
TransactionTemplate tt = new TransactionTemplate(getTransactionManager());
tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
JdbcTemplate jt = new JdbcTemplate(executeTestSource());
jt.execute("insert into `srp_keyword_info` (`kid`, `keyname`, `type`, " +
"`synword`, `srpid`, `differflag`) " +
"values ('11', '1', '11', '1', '1', '1')");
jt.execute("insert into `srp_keyword_info` (`kid`, `keyname`, `type`, " +
"`synword`, `srpid`, `differflag`) " +
"values ('11', '1', '11', '1', '1', '1','2')");
String ss = null;
System.out.println(ss.toCharArray());
return null;
}
});
}
配置正确,但是不回滚这是为什么呢,纠结了一下午,终于找到了答案,原因尽然是:
mysql的表是有事务安全( 比如:InnoDB)和非事务安全(比如:ISAM、MyISAM)之分的,所以你当前表的事务类型是ISAM、或是MyISAM其中的一种,只要修改为InnoDB就可以了,MyISAM是非事务安全的,所以无法实现数据回滚。 只要修改表的类型即可:
相关推荐
通过本章节的学习,您应该能够掌握如何使用JdbcTemplate进行基本的数据库操作,以及如何在Spring中配置和使用声明式事务来管理复杂的业务流程。这些技能对于开发基于Spring框架的应用程序至关重要。
Spring支持两种类型的事务管理:编程式事务管理和声明式事务管理。 1. **编程式事务管理**:通过编程的方式管理事务,通常是在业务逻辑中嵌入事务管理的代码,例如在Service层的方法中加入事务的开启、提交或回滚等...
2. **编程式事务管理**:虽然较为复杂,但在某些特定场景下,如需要灵活控制事务的开始、提交和回滚时机,编程式事务管理是必要的。可以使用PlatformTransactionManager接口及其实现,如...
通常情况下,JdbcTemplate本身不直接支持事务,但可以与Spring的事务管理机制相结合,来实现声明式事务管理。这包括使用XML配置或注解的方式来管理事务。不过,如果我们想要手动控制事务,比如在某些特定场景需要...
1. **编程式事务管理**:通过使用`PlatformTransactionManager`接口及其实现类(如`JdbcTemplate`或`HibernateTemplate`),开发者可以在代码中手动开始、提交、回滚事务。这种方式灵活性高,但容易导致事务控制代码...
本资料包"spring声明式事务管理+jdbc+连接池.zip"显然是针对Spring框架在数据库操作方面的深入学习,特别是如何利用Spring进行声明式事务管理和JDBC操作,以及如何配置和使用数据库连接池。接下来,我们将详细探讨这...
4. **编程式事务管理**:除了声明式事务,Spring还提供了编程式事务管理,允许在代码中手动控制事务的开始、提交、回滚。通常,这种方式用于更复杂的事务控制,但在Spring Boot中,声明式事务管理已经足够强大和灵活...
通过自动配置、内嵌Web服务器、JdbcTemplate的简单操作、声明式事务管理、拦截器以及数据源的配置,开发者可以更专注于业务代码的编写,提高开发效率和代码质量。同时,Spring Boot的灵活性使得它可以适应各种复杂的...
编程式事务管理通过`PlatformTransactionManager`接口及其实现类(如`DataSourceTransactionManager`)进行手动控制,而声明式事务管理则更加简便,通过在XML配置或注解中声明事务边界。 在XML配置中,事务管理主要...
首先,Spring支持两种事务管理方式:声明式事务管理和编程式事务管理。声明式事务管理通过在XML配置文件或注解中定义事务边界,使事务管理与业务代码解耦,降低了代码的复杂性。编程式事务管理则需要在代码中显式...
例如,在ORM框架如Hibernate中,如果在事务管理器开启的事务内使用JdbcTemplate执行SQL,由于JdbcTemplate不自动纳入声明式事务管理,所以需要特别处理。在上述代码段中,`DataSourceTransactionManager`负责开启...
Spring提供了两种主要的事务管理方式:编程式事务管理和声明式事务管理。 1. **编程式事务管理**:使用`PlatformTransactionManager`接口和`TransactionDefinition`接口进行事务的开始、提交、回滚等操作。开发者...
编程式事务管理则需要在代码中手动调用TransactionTemplate或PlatformTransactionManager接口的方法来控制事务。 在"Spring_Day10"这个压缩包中,你可能找到了相关的练习项目,这些项目可能包含以下内容: - 一个...
详解Spring学习之编程式事务管理 Spring框架中提供了两种事务管理方式:编程式事务管理和声明式事务管理。在本篇文章中,我们主要介绍编程式事务管理。 什么是编程式事务管理? 编程式事务管理是指通过编写代码...
标签“源码”和“工具”表明这篇博客可能还涉及了Spring JDBC的源码分析,以及一些实用的工具或技巧,如数据库连接池的配置、事务异常处理、事务回滚规则等。 综上,Spring JDBC事务管理是Spring框架中重要的部分,...
声明式事务管理是通过配置或注解来实现的,如@Transactional注解,使得开发者无需手动管理事务的开始、提交和回滚。编程式事务管理则需要通过TransactionTemplate或者直接使用PlatformTransactionManager接口来控制...
而声明式事务管理则更简洁,只需在方法上添加@Transactional注解即可,Spring会自动处理事务的开始、提交或回滚。Spring_transaction.zip可能包含了一些关于如何在Spring中进行事务管理的实例和配置文件。 Spring ...
Spring 提供了丰富的工具和策略来处理事务,既支持声明式事务管理,也支持编程式事务管理。 首先,事务处理的核心在于ACID原则,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性...
声明式事务管理是指不需要手动编写事务相关代码,而是通过配置和注解来管理事务的方式。 声明式事务实现过程主要涉及到以下几个步骤: 1、环境搭建:首先需要导入相关依赖,包括数据库驱动、Spring-jdbc模块等。...
2. 编程式事务管理:这种方式需要在代码中手动调用TransactionTemplate或PlatformTransactionManager接口的方法来管理事务的开始、提交和回滚。虽然灵活性高,但增加了代码复杂性。 在Spring中,事务的隔离级别也是...