`
白色熊猫
  • 浏览: 17389 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

spring事务管理(编程式)

阅读更多
1、关键抽象类:
package org.springframework.transaction;
public interface PlatformTransactionManager {
	TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException;
	void commit(TransactionStatus status) throws TransactionException;
	void rollback(TransactionStatus status) throws TransactionException;
}

TransactionDefinition定义了事务的隔离成都,传播行为,超时,只读等属性,TransactionStatus代表了一个新的事务发起或者已经存在的事务,可以通过它来控制事务的执行和调查的状态。
package org.springframework.transaction;
public interface TransactionStatus extends SavepointManager {

	boolean isNewTransaction();

	boolean hasSavepoint();
	
	void setRollbackOnly();

	boolean isRollbackOnly();

	boolean isCompleted();

}


spring提供编程式事务管理和声明式事务管理。
编程式事务管理可以实现细粒度的事务管理。spring提供两种方式,一种为PlatformTransactionManager,另一种为TransactionTemplate。
先使用PlatformTransactionManager实现。
package cn.com.gan.spring.database;

public interface IUserDao {
public void insert(User user);
public User find(String name);
}


package cn.com.gan.spring.database;

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

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.DefaultTransactionDefinition;

import javax.sql.DataSource;

public class UserDao implements IUserDao {
	// private DataSource dataSource;
	private JdbcTemplate jdbcTemplate;
    private PlatformTransactionManager tm;
    private DefaultTransactionDefinition df;
	public void setDataSource(DataSource dataSource) {
		jdbcTemplate = new JdbcTemplate(dataSource);
		tm=new DataSourceTransactionManager(dataSource);
		df=new DefaultTransactionDefinition();
		df.setPropagationBehavior(DefaultTransactionDefinition.PROPAGATION_REQUIRED);
	}
	@Override
	public User find(String name) {
		List<Map> list = jdbcTemplate
				.queryForList("select * from user where name='" + name + "'");
		User user = null;
		for (Map map : list) {
			user = new User();	
			user.setName(map.get("name").toString());
			user.setAge(Short.parseShort(map.get("age").toString()));
		}
		return user;
	}
	@Override
	public void insert(User user) {
		TransactionStatus ts=tm.getTransaction(df);
		try{
	    jdbcTemplate.update("insert into user(name,age) values(?,?)",
				new Object[] { user.getName(), user.getAge() });
	    jdbcTemplate.update("insert into user(name,age) values(?,?)",
				new Object[] { user.getName(), user.getAge() });
		}catch(DataAccessException e){
			tm.rollback(ts);
			e.printStackTrace();
		}
	    tm.commit(ts);
	}
}

其中insert为事务管理,如果其中一条插入失败就回滚。


分享到:
评论

相关推荐

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

    本教程将深入探讨 Spring 的编程式事务管理和声明式事务管理,帮助你理解这两种方式的差异与应用场景。 首先,编程式事务管理依赖于编程的方式显式地控制事务的开始、提交、回滚等操作。它通过实现 `...

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

    本文将全面分析Spring中的编程式事务管理和声明式事务管理,旨在帮助开发者深入理解这两种事务管理方式,并在实际项目中合理选择。 **编程式事务管理** 编程式事务管理是通过代码直接控制事务的开始、提交、回滚等...

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

    在Spring框架中,事务管理是核心功能之一,它确保了数据操作的一致性和完整性。本教程将深入探讨如何在Spring中实现自定义事务管理器...这将加深你对Spring事务管理的理解,帮助你在实际项目中更加熟练地运用这些技术。

    spring编程式事务实现

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

    Spring事务管理Demo

    在Spring框架中,事务管理是核心特性之一,它允许开发者以声明式或编程式的方式处理应用中的事务。Spring事务管理的目的是确保数据的一致性和完整性,尤其是在多操作、多资源的环境中。本Demo将深入探讨Spring如何...

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

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

    spring_tx编程式事务代码

    总结来说,`Spring_tx编程式事务代码`主要涉及Spring的`TransactionTemplate`类,它是Spring事务管理的一种便捷工具,可以帮助开发者以编程的方式更加方便地控制事务的生命周期,同时保持代码的简洁和可维护性。...

    Spring事务管理开发必备jar包

    2. **Spring事务管理**:Spring提供了两种事务管理方式,即编程式事务管理和声明式事务管理。编程式事务管理通过TransactionTemplate或直接调用PlatformTransactionManager接口的方法来管理事务,而声明式事务管理则...

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

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

    Spring 声明式事务和Spring 编程式事务

    Spring 声明式事务和Spring 编程式事务

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

    全面分析 Spring 的编程式事务管理与声明式事务管理 本文将从 Spring 的事务管理入手,深入讲解编程式事务管理和声明式事务管理的实现机制和原理。通过本文的学习,您将能够理解 Spring 事务管理的本质,并灵活运用...

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

    标签“源码”提示我们可能会涉及Spring事务管理的底层实现。在Spring框架中,事务管理器会利用AOP代理来织入事务控制代码。当使用JDBC时,Spring会通过Connection的setAutoCommit(false)方法开启手动事务,并在适当...

    实验 spring 声明事务

    同时,Spring还提供了编程式事务管理,允许开发者在代码中手动管理事务,但这种方式通常在更复杂的场景或特殊需求下使用。 通过这个实验,学生可以深入理解Spring声明式事务管理的工作原理,以及如何在实际项目中...

    Spring事务管理的jar包

    Spring事务管理分为编程式事务管理和声明式事务管理两种方式。编程式事务管理通过使用PlatformTransactionManager接口的begin、commit、rollback等方法直接控制事务的生命周期,这种方式灵活但容易导致代码过于繁琐...

    spring事务管理

    Spring事务管理主要包括两种类型:编程式事务管理和声明式事务管理。 - **编程式事务管理**:通过编写代码来控制事务的开始、提交或回滚等操作。这种方式灵活度高,但会使得代码变得冗余且难以维护。 - **声明式...

    spring事务管理5种方法

    Spring框架提供了对事务的声明式和编程式管理,以适应不同开发场景的需求。 1. 声明式事务管理: 声明式事务管理是Spring最常用的事务管理方式,它通过在配置文件或者注解中声明事务边界,将事务管理与业务代码...

Global site tag (gtag.js) - Google Analytics