from: http://blog.csdn.net/yeson6/article/details/4954589
- <?xml version="1.0" encoding="UTF-8"?>
- <beans
- xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
- <!-- JDBC模板 -->
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
- <property name="dataSource">
- <ref local="dataSource"/>
- </property>
- </bean>
- <!-- 数据源 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>org.gjt.mm.MySQL.Driver</value>
- </property>
- <property name="url">
- <value>jdbc:mysql://localhost:3306/test</value>
- </property>
- <property name="username">
- <value>root</value>
- </property>
- <property name="password">
- <value>root</value>
- </property>
- </bean>
- <!--事务模板 -->
- <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
- <property name="transactionManager">
- <ref local="transactionManager"/>
- </property>
- </bean>
- <!-- jdbc事务管理器 -->
- <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
- <property name="dataSource">
- <ref local="dataSource"/>
- </property>
- </bean>
- </beans>
- package com.spring.jdbc;
- import org.springframework.beans.factory.BeanFactory;
- import org.springframework.beans.factory.xml.XmlBeanFactory;
- import org.springframework.core.io.ClassPathResource;
- import org.springframework.core.io.Resource;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.transaction.TransactionStatus;
- import org.springframework.transaction.support.TransactionCallbackWithoutResult;
- import org.springframework.transaction.support.TransactionTemplate;
- /**
- * JDBC编程式事务控制
- * @author nk
- *
- */
- public class JdbcTemplateTest {
- public static void main(String[] args) {
- Resource resource = new ClassPathResource("applicationContext.xml");
- BeanFactory factory = new XmlBeanFactory(resource);
- final JdbcTemplate jdbcTemplate = (JdbcTemplate)factory.getBean("jdbcTemplate");
- //不会被回滚
- jdbcTemplate.execute("insert into test(name,age) values('Tom2',20)");
- TransactionTemplate transactionTemplate = (TransactionTemplate)factory.getBean("transactionTemplate");
- //回调方法中的jdbc操作,如果未发生异常则会自动提交,发生异常则会回滚
- transactionTemplate.execute(new TransactionCallbackWithoutResult(){
- protected void doInTransactionWithoutResult(TransactionStatus status) {
- try {
- jdbcTemplate.execute("insert into test(name,age) values('Tom',20)");
- jdbcTemplate.execute("insert into test(name,ages) values('Tom',20)");
- } catch (Exception e) {
- status.setRollbackOnly(); //回滚
- System.out.println("回滚事务");
- }
- }
- });
- }
- }
//要获得Connection实例可以采用:
DataSourceUtils.getConnection(jdbcTemplate.getDataSource())
相关推荐
Spring提供了两种主要的事务管理方式:声明式事务管理和编程式事务管理。本篇文章将聚焦于编程式事务管理,特别是如何通过`TransactionTemplate`进行事务控制。 1. **Spring编程式事务管理**: 编程式事务管理允许...
4. **JdbcTransactionManager**: 这是Spring提供的事务管理器,它利用JDBC的API来管理事务,支持编程式和声明式事务控制。 5. **DataSource**: Spring JDBC通常与DataSource一起使用,DataSource是Java的JNDI服务的...
在本篇“Spring学习笔记(十五)——编程式事务例子”中,我们将深入探讨Spring框架中的编程式事务管理。在实际开发中,我们通常使用声明式事务管理,它基于AOP(面向切面编程)来简化事务处理。然而,有时为了更细...
此外,Spring还支持编程式事务管理,通过PlatformTransactionManager的接口进行事务的开始、提交、回滚等操作。虽然这种方式更灵活,但通常推荐使用声明式事务管理,因为它更易于维护且降低了代码的复杂性。 总结...
本篇文章将深入探讨Spring中的两种主要事务管理方式:编程式事务管理和声明式事务管理。 1. 编程式事务管理: 编程式事务管理允许开发者直接在代码中控制事务的开始、提交、回滚等操作。这种方式具有较高的灵活性,...
本主题将深入探讨Hibernate的编程式事务管理和Spring AOP的声明式事务管理,以及两者如何在实际项目中集成使用。 **Hibernate编程式事务管理** Hibernate作为流行的ORM(对象关系映射)框架,提供了对JDBC事务的...
5. **事务管理**:Spring JDBC模块与Spring的事务管理相集成,可以方便地进行编程式或声明式事务控制。例如,使用`TransactionTemplate`或在配置中定义@Transactional注解,可以实现事务的自动回滚和提交。 6. **...
1. 编程式事务管理:通过PlatformTransactionManager接口的begin(), commit()和rollback()方法手动控制事务。 2. 声明式事务管理:利用@Transactional注解在方法级别声明事务,Spring会自动进行事务的开启、提交或...
在Spring的声明式事务管理下,只需在配置文件中声明事务属性,即可实现事务的自动管理,大大提高了开发效率。 在Spring-JDBC中,主要涉及以下几个关键组件: 1. DataSource:数据源是连接数据库的桥梁,Spring支持...
在JDBC实例中,我们可以使用@Transactional注解声明方法需要在事务中执行,Spring会自动管理事务的开始、提交和回滚。 3. **JdbcTemplate方法**:JdbcTemplate提供了一系列的方法来执行SQL,如`update()`用于执行...
在思维导图"Spring Transaction.twd"中,可能包含了Spring事务管理的各个概念和它们之间的关系,如事务的ACID属性(原子性、一致性、隔离性和持久性),事务管理器,以及声明式和编程式事务管理的实现方式。...
2. **Transaction Management**: Spring-JDBC支持声明式事务管理,允许开发者使用注解(如@Transactional)来控制事务的边界,无需手动调用commit()和rollback()。这提高了代码的可读性和可维护性。 3. **...
编程式事务管理则需要在代码中手动调用TransactionTemplate或PlatformTransactionManager接口的方法来控制事务。 在"Spring_Day10"这个压缩包中,你可能找到了相关的练习项目,这些项目可能包含以下内容: - 一个...
在Spring框架中,事务管理主要分为编程式事务管理和声明式事务管理两种: 1. **编程式事务管理**:这种方式要求开发者在代码中显式地开始、提交或回滚事务。通常通过`PlatformTransactionManager`接口实现,例如`...
在本篇"Spring学习之八--Hibernate编程式事务"中,我们将探讨如何在Spring框架中使用Hibernate进行编程式事务管理。编程式事务管理是相对于声明式事务管理的一种方式,它允许开发者通过代码来显式控制事务的开始、...
这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程。下面将详细解释Spring JDBC的核心概念、功能以及使用方法。 首先,Spring JDBC的核心目标是简化传统的JDBC编程...
通过TransactionManager接口,我们可以声明式或编程式地控制事务的边界。在Spring中,PlatformTransactionManager是所有事务管理器的抽象接口,而DataSourceTransactionManager则是一个具体的实现,适用于基于...
另一方面,`spring-tx-3.2.0.RELEASE.jar` 是Spring的事务管理模块,它支持编程式和声明式事务管理。在Spring JDBC中,事务管理是至关重要的,因为它确保了数据库操作的一致性和完整性。`PlatformTransactionManager...
在IT行业中,Spring框架是Java开发中的核心工具之一,它为开发者提供了丰富的功能...通过解压并研究"spring声明式事务管理+jdbc+连接池.zip"中的示例代码和配置,可以加深对这些概念的理解,并能更好地应用于实际开发。
"spring-tx-4.3.7.RELEASE.jar"是Spring的事务管理模块,它为应用程序提供了声明式和编程式事务管理。主要功能包括: 1. 声明式事务管理:通过@Transactional注解,开发者可以在方法级别声明事务边界,Spring会自动...