spring 事务管理(编程式)
2013-11-22 16:43
387 查看
spring事务管理(编程式)
1、关键抽象类:
Java代码
TransactionDefinition定义了事务的隔离成都,传播行为,超时,只读等属性,TransactionStatus代表了一个新的事务发起或者已经存在的事务,可以通过它来控制事务的执行和调查的状态。
Java代码
spring提供编程式事务管理和声明式事务管理。
编程式事务管理可以实现细粒度的事务管理。spring提供两种方式,一种为PlatformTransactionManager,另一种为TransactionTemplate。
先使用PlatformTransactionManager实现。
Java代码
Java代码
其中insert为事务管理,如果其中一条插入失败就回滚。
1、关键抽象类:
Java代码
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代表了一个新的事务发起或者已经存在的事务,可以通过它来控制事务的执行和调查的状态。
Java代码
package org.springframework.transaction; public interface TransactionStatus extends SavepointManager { boolean isNewTransaction(); boolean hasSavepoint(); void setRollbackOnly(); boolean isRollbackOnly(); boolean isCompleted(); }
spring提供编程式事务管理和声明式事务管理。
编程式事务管理可以实现细粒度的事务管理。spring提供两种方式,一种为PlatformTransactionManager,另一种为TransactionTemplate。
先使用PlatformTransactionManager实现。
Java代码
package cn.com.gan.spring.database; public interface IUserDao { public void insert(User user); public User find(String name); }
Java代码
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 的编程式事务管理及声明式事务管理
- 【2016-08-15】{全面分析 Spring 的编程式事务管理及声明式事务管理}
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 全面分析 Spring 的编程式事务管理及声明式事务管理--转
- Spring 的事务管理(编程式和声明式)
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- Spring的事务管理入门:编程式事务管理(TransactionTemplate)!!!
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 详解Spring学习之编程式事务管理
- Spring学习8-Spring事务管理(编程式事务管理)
- Spring的四种事务管理(一种编程式事务+三种声明事务)<学习随笔>
- Spring事务管理实现方式之编程式事务与声明式事务详解
- 新手程序员笔记-Spring-全面分析Spring 的编程式事务管理及声明式事务管理【转】
- Spring事务管理实现方式之编程式事务与声明式事务详解
- Spring 的编程式事务管理及声明式事务管理--1
- 全面分析 Spring 的编程式事务管理及声明式事务管理