`

使用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编程式事务实现

    演示了spring编程式事务的实现,通过TransactionTemplate模板进行事务控制

    spring_tx编程式事务代码

    Spring为了简化事务管理的代码:提供了模板类 TransactionTemplate,所以手动编程的方式来管理事务,只需要使用该模板类即可

    Spring事务管理4种方式

    Spring事务管理4种方式 入门级 最简单demo PlatformTransactionManager TransactionTemplate

    springMVC + Hibernate 工程模板

    和transactionTemplate(用于编程式事务处理,只用于特殊需要,因为已经存在配置式事务,一般符合命名的方法会自动创建事务) 其他功能: shown工具包 - 图片上传,分页 urlRewrite - 访问地址重定向,用于页面伪...

    Spring 2.0 开发参考手册

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多...

    Spring-Reference_zh_CN(Spring中文参考手册)

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多的...

    Spring中文帮助文档

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. IBM WebSphere 9.8.2. BEA WebLogic 9.8.3. Oracle OC4J 9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误...

    spring chm文档

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. BEA WebLogic 9.8.2. IBM WebSphere 9.9. 公共问题的解决方案 9.9.1. 对一个特定的 DataSource 使用错误的事务管理器 9.10. 更多...

    Spring API

    9.7. 选择编程式事务管理还是声明式事务管理 9.8. 与特定应用服务器集成 9.8.1. IBM WebSphere 9.8.2. BEA WebLogic 9.8.3. Oracle OC4J 9.9. 常见问题的解决方法 9.9.1. 对一个特定的 DataSource 使用了错误...

    spring.net中文手册在线版

    14.5.1.理解Spring.NET声明式事务管理的实现 14.5.2.第一个例子 14.5.3.Transaction特性的设置 14.5.4.通过AutoProxyCreator使用声明式事务 14.5.5.通过TransactionProxyFactoryObject使用声明式事务 14.5.6. 通过...

    Spring高级之注解驱动开发视频教程

    它里面包含了Spring,SpringMVC,SpringData(事务),SrpingTest等等。 其中: Spring本身里面包含了两大核心IOC和AOP。IOC负责降低我们代码间的依赖关系,使我们的项目灵活度更高,可复用性更强。AOP是让方法间...

    请教:spring事务不起作用

    NULL 博文链接:https://tywo45.iteye.com/blog/267836

    创建SpringBean配置工具类

    创建SpringBean配置工具类(安全)如: &lt;bean id=... scope="prototype"&gt;&lt;/bean&gt;

    基于spring+struts2+springJDBC的轻量级项目demo

    基于spring+struts2+springJDBC编写的轻量级项目 service、dao、action已经写了对应的demo 主要是使用spring的JdbcTemplate和TransactionTemplate

    springboot+redis+mybatis事务和引擎模板

    springboot项目集合了mybatis分页查询和dbcp数据源配置,使用redis缓存都有详细的配置测试方法,封装的工具类常用的集合、对象、设置超时时间和判断key是否存在等详细方法

    火炬博客系统7

    进行完整的事务管理和异常的包装,在此用了Spring的事物模板(TransactionTemplate)实现,可分离数据访问和事物处理,提高业务对象的可复用性,采用getHibernateTemplate()方法来操作hsql进行数据增删改等操作。...

    火炬博客系统5

    进行完整的事务管理和异常的包装,在此用了Spring的事物模板(TransactionTemplate)实现,可分离数据访问和事物处理,提高业务对象的可复用性,采用getHibernateTemplate()方法来操作hsql进行数据增删改等操作。...

    火炬博客系统6

    进行完整的事务管理和异常的包装,在此用了Spring的事物模板(TransactionTemplate)实现,可分离数据访问和事物处理,提高业务对象的可复用性,采用getHibernateTemplate()方法来操作hsql进行数据增删改等操作。...

    SPRING API 2.0.CHM

    All Classes AbstractAdvisorAutoProxyCreator AbstractApplicationContext AbstractApplicationEventMulticaster AbstractAspectJAdvice AbstractAspectJAdvisorFactory AbstractAspectJAdvisorFactory....

    spring-framework-reference-4.1.2

    3. New Features and Enhancements in Spring Framework 4.0 ............................................ 17 3.1. Improved Getting Started Experience .........................................................

Global site tag (gtag.js) - Google Analytics