`

spring中JDBC编程式事务

 
阅读更多

from:  http://blog.csdn.net/yeson6/article/details/4954589

 

spring采用纯JDBC进行数据库操作:

applicationContext.xml

 
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.  xmlns="http://www.springframework.org/schema/beans"  
  4.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">  
  6.  <!-- JDBC模板 -->  
  7.  <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  8.           <property name="dataSource">  
  9.                    <ref local="dataSource"/>          
  10.           </property>  
  11.  </bean>  
  12.  <!-- 数据源 -->  
  13.  <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">  
  14.           <property name="driverClassName">  
  15.                    <value>org.gjt.mm.MySQL.Driver</value>  
  16.           </property>  
  17.           <property name="url">  
  18.                    <value>jdbc:mysql://localhost:3306/test</value>  
  19.           </property>  
  20.           <property name="username">  
  21.                    <value>root</value>                  
  22.           </property>  
  23.           <property name="password">          
  24.                    <value>root</value>  
  25.           </property>  
  26.  </bean>  
  27.  <!--事务模板 -->  
  28.  <bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">  
  29.           <property name="transactionManager">  
  30.                    <ref local="transactionManager"/>  
  31.           </property>  
  32.  </bean>  
  33.  <!-- jdbc事务管理器 -->  
  34.  <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  35.           <property name="dataSource">          
  36.            <ref local="dataSource"/>  
  37.   </property>  
  38.  </bean>  
  39. </beans>  

 

 

测试代码:

 
  1. package com.spring.jdbc;  
  2.   
  3. import org.springframework.beans.factory.BeanFactory;  
  4. import org.springframework.beans.factory.xml.XmlBeanFactory;  
  5. import org.springframework.core.io.ClassPathResource;  
  6. import org.springframework.core.io.Resource;  
  7. import org.springframework.jdbc.core.JdbcTemplate;  
  8. import org.springframework.transaction.TransactionStatus;  
  9. import org.springframework.transaction.support.TransactionCallbackWithoutResult;  
  10. import org.springframework.transaction.support.TransactionTemplate;  
  11.   
  12. /** 
  13.  * JDBC编程式事务控制 
  14.  * @author nk 
  15.  * 
  16.  */  
  17. public class JdbcTemplateTest {  
  18.          public static void main(String[] args) {  
  19.                   Resource resource = new ClassPathResource("applicationContext.xml");  
  20.                   BeanFactory factory = new XmlBeanFactory(resource);                  
  21.                   final JdbcTemplate jdbcTemplate = (JdbcTemplate)factory.getBean("jdbcTemplate");  
  22.                   //不会被回滚  
  23.                   jdbcTemplate.execute("insert into test(name,age) values('Tom2',20)");  
  24.                   TransactionTemplate transactionTemplate = (TransactionTemplate)factory.getBean("transactionTemplate");  
  25.                   //回调方法中的jdbc操作,如果未发生异常则会自动提交,发生异常则会回滚  
  26.                   transactionTemplate.execute(new TransactionCallbackWithoutResult(){          
  27.                            protected void doInTransactionWithoutResult(TransactionStatus status) {  
  28.                                     try {  
  29.                                              jdbcTemplate.execute("insert into test(name,age) values('Tom',20)");  
  30.                                              jdbcTemplate.execute("insert into test(name,ages) values('Tom',20)");  
  31.                                     } catch (Exception e) {  
  32.                                              status.setRollbackOnly();  //回滚  
  33.                                              System.out.println("回滚事务");                  
  34.                                     }          
  35.                            }  
  36.                   });  
  37.          }  
  38. }  
 

 

 

//要获得Connection实例可以采用:
DataSourceUtils.getConnection(jdbcTemplate.getDataSource())

分享到:
评论

相关推荐

    spring编程式事务实现

    Spring提供了两种主要的事务管理方式:声明式事务管理和编程式事务管理。本篇文章将聚焦于编程式事务管理,特别是如何通过`TransactionTemplate`进行事务控制。 1. **Spring编程式事务管理**: 编程式事务管理允许...

    spring_JDBC整合包

    4. **JdbcTransactionManager**: 这是Spring提供的事务管理器,它利用JDBC的API来管理事务,支持编程式和声明式事务控制。 5. **DataSource**: Spring JDBC通常与DataSource一起使用,DataSource是Java的JNDI服务的...

    spring学习笔记(十五)-编程式事务例子

    在本篇“Spring学习笔记(十五)——编程式事务例子”中,我们将深入探讨Spring框架中的编程式事务管理。在实际开发中,我们通常使用声明式事务管理,它基于AOP(面向切面编程)来简化事务处理。然而,有时为了更细...

    Spring集成的jdbc编码和事务管理

    此外,Spring还支持编程式事务管理,通过PlatformTransactionManager的接口进行事务的开始、提交、回滚等操作。虽然这种方式更灵活,但通常推荐使用声明式事务管理,因为它更易于维护且降低了代码的复杂性。 总结...

    全面分析_Spring_的编程式事务管理及声明式事务管理.

    本篇文章将深入探讨Spring中的两种主要事务管理方式:编程式事务管理和声明式事务管理。 1. 编程式事务管理: 编程式事务管理允许开发者直接在代码中控制事务的开始、提交、回滚等操作。这种方式具有较高的灵活性,...

    Hibernate编程式事务与Spring Aop的声明式事务(spring与hibernate集成)

    本主题将深入探讨Hibernate的编程式事务管理和Spring AOP的声明式事务管理,以及两者如何在实际项目中集成使用。 **Hibernate编程式事务管理** Hibernate作为流行的ORM(对象关系映射)框架,提供了对JDBC事务的...

    Spring JDBC相关jar包:spring_jdbc_4.0.0.zip

    5. **事务管理**:Spring JDBC模块与Spring的事务管理相集成,可以方便地进行编程式或声明式事务控制。例如,使用`TransactionTemplate`或在配置中定义@Transactional注解,可以实现事务的自动回滚和提交。 6. **...

    spring-jdbc-dao

    1. 编程式事务管理:通过PlatformTransactionManager接口的begin(), commit()和rollback()方法手动控制事务。 2. 声明式事务管理:利用@Transactional注解在方法级别声明事务,Spring会自动进行事务的开启、提交或...

    spring-jdbc源码

    在Spring的声明式事务管理下,只需在配置文件中声明事务属性,即可实现事务的自动管理,大大提高了开发效率。 在Spring-JDBC中,主要涉及以下几个关键组件: 1. DataSource:数据源是连接数据库的桥梁,Spring支持...

    Spring+JDBC实例

    在JDBC实例中,我们可以使用@Transactional注解声明方法需要在事务中执行,Spring会自动管理事务的开始、提交和回滚。 3. **JdbcTemplate方法**:JdbcTemplate提供了一系列的方法来执行SQL,如`update()`用于执行...

    Spring事务管理和SpringJDBC思维导图

    在思维导图"Spring Transaction.twd"中,可能包含了Spring事务管理的各个概念和它们之间的关系,如事务的ACID属性(原子性、一致性、隔离性和持久性),事务管理器,以及声明式和编程式事务管理的实现方式。...

    Spring-JDBC,带一小例子

    2. **Transaction Management**: Spring-JDBC支持声明式事务管理,允许开发者使用注解(如@Transactional)来控制事务的边界,无需手动调用commit()和rollback()。这提高了代码的可读性和可维护性。 3. **...

    Spring aop、jdbc和事务tx练习

    编程式事务管理则需要在代码中手动调用TransactionTemplate或PlatformTransactionManager接口的方法来控制事务。 在"Spring_Day10"这个压缩包中,你可能找到了相关的练习项目,这些项目可能包含以下内容: - 一个...

    spring JDBC事务管理

    在Spring框架中,事务管理主要分为编程式事务管理和声明式事务管理两种: 1. **编程式事务管理**:这种方式要求开发者在代码中显式地开始、提交或回滚事务。通常通过`PlatformTransactionManager`接口实现,例如`...

    spring学习之八--Hibernate编程式事务

    在本篇"Spring学习之八--Hibernate编程式事务"中,我们将探讨如何在Spring框架中使用Hibernate进行编程式事务管理。编程式事务管理是相对于声明式事务管理的一种方式,它允许开发者通过代码来显式控制事务的开始、...

    SpringJDBC.rar_jdbc spring_spring jd_spring jdbc_spring使用JDBC进行数

    这个“SpringJDBC.rar”压缩包文件可能包含了关于如何在Spring框架中集成和使用JDBC的相关示例和教程。下面将详细解释Spring JDBC的核心概念、功能以及使用方法。 首先,Spring JDBC的核心目标是简化传统的JDBC编程...

    spring jdbc.zip

    通过TransactionManager接口,我们可以声明式或编程式地控制事务的边界。在Spring中,PlatformTransactionManager是所有事务管理器的抽象接口,而DataSourceTransactionManager则是一个具体的实现,适用于基于...

    Spring Jdbc的jar包

    另一方面,`spring-tx-3.2.0.RELEASE.jar` 是Spring的事务管理模块,它支持编程式和声明式事务管理。在Spring JDBC中,事务管理是至关重要的,因为它确保了数据库操作的一致性和完整性。`PlatformTransactionManager...

    spring声明式事务管理+jdbc+连接池.zip

    在IT行业中,Spring框架是Java开发中的核心工具之一,它为开发者提供了丰富的功能...通过解压并研究"spring声明式事务管理+jdbc+连接池.zip"中的示例代码和配置,可以加深对这些概念的理解,并能更好地应用于实际开发。

    Spring对JDBC的支持jar包.rar

    "spring-tx-4.3.7.RELEASE.jar"是Spring的事务管理模块,它为应用程序提供了声明式和编程式事务管理。主要功能包括: 1. 声明式事务管理:通过@Transactional注解,开发者可以在方法级别声明事务边界,Spring会自动...

Global site tag (gtag.js) - Google Analytics