`

使用TransactionTemplate来完成Spring的编程式事务管理

阅读更多
<!-- 资源文件 -->
	<!-- DB2 dataSource-->
	<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName" value="${jdbc.driver}" />
		<property name="url" value="${jdbc.url}" />
		<property name="username" value="${jdbc.username}" />
		<property name="password" value="${jdbc.password}" />
	</bean>

	<!-- 定义事务管理器 -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource" />
	</bean>
	
	<!-- 编程式事务模板,Spring的编程式事务可以通过TransactionTemplate的execute(TransactionCallback<T> action)方法来完成 -->
	<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">
		<property name="transactionManager" ref="transactionManager" />
	</bean>

	<!-- jdbcTemplate -->
	 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- TransactionTemplateFz -->
	 <bean id="transactionTemplateFz" class="com.suning.sel.eps.main.service.TransactionTemplateFz">
	</bean>
	
	<context:annotation-config />


import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
import org.springframework.transaction.support.TransactionTemplate;
import org.testng.annotations.Test;

/**
 * 使用TransactionTemplate来完成Spring的编程式事务管理<br>
 * 〈功能详细描述〉
 * 
  * @see [相关类/方法](可选)
 * @since [产品/模块版本] (可选)
 */
@ContextConfiguration(locations = { "file:src/main/webapp/WEB-INF/applicationContext.xml" })
public class TestTransactionTemplate extends AbstractTestNGSpringContextTests {
    // AbstractTestNGSpringContextTests方法执行完不会回滚,
    // AbstractTransactionalTestNGSpringContextTests在每个方法执行结束之后会把事务回滚,这样每次修改、新增、删除操作都可以执行多次

    @Autowired
    private JdbcTemplate jdbcTemplate;
    @Autowired
    private TransactionTemplate transactionTemplate;

    /**
     * 
     * 直接使用TransactionTemplate进行编程式事务管理 <br>
     * 〈功能详细描述〉
     * 
     * @see [相关类/方法](可选)
     * @since [产品/模块版本](可选)
     */
    @Test
    public void testTransactionTemplate() {
        // 设置事务的传播行为,默认是PROPAGATION_REQUIRED,也可使用默认值
        transactionTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
        // 设置事务的隔离级别,默认是ISOLATION_DEFAULT:使用的是底层数据库的默认的隔离级别,也可使用默认值
        transactionTemplate.setIsolationLevel(TransactionDefinition.ISOLATION_READ_COMMITTED);
        // 设置是否只读,默认是false,也可使用默认值
        transactionTemplate.setReadOnly(true);
        // 默认使用的是数据库底层的默认的事务的超时时间,也可使用默认值
        transactionTemplate.setTimeout(30000);

        List<Map<String, Object>> userList = transactionTemplate
                .execute(new TransactionCallback<List<Map<String, Object>>>() {
                    @Override
                    public List<Map<String, Object>> doInTransaction(TransactionStatus status) {
                        return jdbcTemplate.queryForList("select * from sym_t_user");
                    }

                });
        System.out.println(userList);
    }
}
分享到:
评论
1 楼 hzxlb910 2016-07-05  

相关推荐

    spring编程式事务实现

    总的来说,`TransactionTemplate`为Spring编程式事务提供了一种简洁、可复用的解决方案。通过它,开发者可以在不牺牲事务控制灵活性的同时,避免过多的事务管理代码侵入业务逻辑。然而,在实际应用中,应当根据项目...

    spring编程式事务与声明式事务详解

    Spring 提供了多种方式来实现编程式事务管理,例如使用 TransactionTemplate 或者直接使用 PlatformTransactionManager。 声明式事务管理 声明式事务管理是指通过配置文件或注解来管理事务。 Spring 提供了多种...

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

    3. **TransactionTemplate**: Spring提供的一个工具类,简化了编程式事务管理的代码,使得我们可以专注于业务逻辑而不是事务控制。通过设置TransactionDefinition和执行execute方法,我们可以在一个回调函数中编写...

    spring_tx编程式事务代码

    编程式事务管理允许开发者通过代码来精确控制事务的边界,而`TransactionTemplate`就是Spring为编程式事务管理提供的一种便捷工具。 `TransactionTemplate`类是Spring框架的`org.springframework.transaction....

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

    开发者可以在代码中调用 `TransactionTemplate` 或直接使用 `PlatformTransactionManager` 的方法来管理事务边界。这种方式灵活性较高,适合处理复杂的事务逻辑,但可能导致代码的事务管理部分过于繁琐,不易维护。 ...

    spring 自定义事务管理器,编程式事务,声明式事务@Transactional使用

    本教程将深入探讨如何在Spring中实现自定义事务管理器、编程式事务处理以及声明式事务`@Transactional`的使用。 首先,让我们了解事务管理的基本概念。事务是一组数据库操作,这些操作要么全部执行,要么全部回滚,...

    全面分析Spring的编程式事务管理与声明式事务管理.doc

    Spring 提供了多种方式来实现编程式事务管理,例如使用 TransactionTemplate、TransactionInterceptor 等。 六、声明式事务管理 声明式事务管理是指通过配置文件或注解的方式来管理事务的提交和回滚。 Spring ...

    详解Spring学习之编程式事务管理

    详解Spring学习之编程式事务管理 Spring框架中提供了两种事务管理方式:编程式事务管理和声明式事务...我们讨论了编程式事务管理的定义、优点和缺点,并提供了一些示例代码来演示如何使用编程式事务管理来管理事务。

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

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

    spring编程式事物

    当我们谈论“Spring编程式事务”时,这涉及到Spring框架中对数据库事务的管理方式之一。 Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理是指在代码中显式地控制事务的开始、提交、...

    spring编程式和声明式事务管理

    在Spring中,我们通常使用`PlatformTransactionManager`接口及其实现类,如`DataSourceTransactionManager`来管理事务。通过在业务逻辑代码中调用`TransactionTemplate`或直接使用`TransactionManager`的方法,我们...

    spring编程式事务与声明式事务详解[参照].pdf

    通过TransactionTemplate或者直接在Service层的方法中使用try-catch-finally结构来管理事务的开始、提交和回滚。这种方式给开发者提供了更多的控制,但可能导致代码中事务管理部分过于繁杂,不易于维护。 **声明式...

    09-4编程式事务管理.rar

    在Spring中,编程式事务管理通常使用PlatformTransactionManager接口实现,如DataSourceTransactionManager(适用于JDBC事务)或HibernateTransactionManager(适用于Hibernate)。通过这个接口,我们可以手动开启...

    spring声明式事务处理demo

    编程式事务管理通常通过AOP(面向切面编程)的TransactionTemplate或PlatformTransactionManager接口直接在代码中控制事务,而声明式事务管理则是基于AOP的,通过配置XML或使用注解来定义事务边界。 1. **配置...

    跟我学Spring3(9.3)Spring的事务之编程式事

    通过学习这一章节,你将能够熟练掌握Spring编程式事务的使用,理解事务管理的核心原理,并能在实际开发中灵活应用。结合提供的"Java开发Java经验技巧共34页.pdf"文档,你将获得更深入的理论知识和实践经验。同时,...

    spring声明事务,编程事务实现

    编程式事务管理使用 TransactionTemplate 或者直接使用底层的 PlatformTransactionManager。声明式事务管理有基于 tx 和 aop 名字空间的 xml 配置文件和基于 @Transactional 注解的方式。 为什么使用 Spring 来进行...

    使用Spring的事务模板

    事务模板(`TransactionTemplate`)是Spring提供的一种编程式事务管理工具,它简化了在非AOP环境中使用事务的代码。`TransactionTemplate`包装了`PlatformTransactionManager`,并提供了一种简单的API来执行事务内的...

    spring事务管理

    在Spring框架中,编程式事务管理主要通过`org.springframework.transaction.support.TransactionTemplate`或`org.springframework.transaction.PlatformTransactionManager`来实现。 **示例代码分析**: 首先,...

    spring_如何管理事务的

    Spring支持两种类型的事务管理方式:编程式事务管理和声明式事务管理。 #### 二、编程式事务管理 编程式事务管理允许开发人员通过编程的方式直接控制事务的开始、提交或回滚。这种方式相对灵活,但也存在一些缺点...

Global site tag (gtag.js) - Google Analytics