Spring 对事务的支持

本文介绍了Spring的事务管理,包括编程式和声明式事务管理,重点讲解了声明式事务管理中的@Transactional注解及其事务传播行为。内容涵盖PlatformTransactionManager、TransactionDefinition和TransactionStatus接口,以及@Transactional注解的使用细节和注意事项。
摘要由CSDN通过智能技术生成

一、Spring 支持两种方式的事务管理:编程式事务管理、声明式事务管理。
1、编程式事务管理:通过TransactionTemplate或者TransactionManager手动管理事务,很少使用。

//使用TransactionTemplate 进行编程式事务管理的示例代码
@Autowired
private TransactionTemplate transactionTemplate;
public void testTransaction() {

        transactionTemplate.execute(new TransactionCallbackWithoutResult() {
            @Override
            protected void doInTransactionWithoutResult(TransactionStatus transactionStatus) {

                try {

                    // ....  业务代码
                } catch (Exception e){
                    //回滚
                    transactionStatus.setRollbackOnly();
                }

            }
        });
}
//使用 TransactionManager 进行编程式事务管理的示例代码
@Autowired
private PlatformTransactionManager transactionManager;
public void testTransaction(){
	TransactionStatus status = transactionManager.getTransaction(new DefaultTransactionDefinition());
	try{
			//......业务代码
			transactionManager.commit(status);
		}catch(Exception e){
			transactionManager.rollback(status);
			}
}

2、声明式事务管理:通过AOP实现(基于@Transactional的全注解方式使用最多),开发中多使用这个(代码侵入性最小)

//使用 @Transactional注解进行事务管理的示例代码
@Transactional(propagation = Propagation.REQUIRED)
public void aMethod{
	//do something
	Cat cat = new Cat();
	Animal animal = new Animal();
	animal.aMethod();
	cat.cMethod();
}

二、Spring事务管理接口
Spring框架中,事务管理相关最重要的3个接口:
1、PlatformTransactionManager:(平台)事务管理器,Spring事务策略的核心。
2、TransactionDefinition:事务定义信息(事务隔离级别、传播行为、超时、只读、回滚规则)。
3、TransactionStatus:事务运行状态。

PlatformTransactionManager接口可视为事务的管理者,TransactionDefinition和TransactionStatus可视为事务的描述。
PlatformTransactionManager会根据TransactionDefinition的定义如事务超时时间、隔离级别、传播行为等进行事务管理,TransactionStatus接口则提供一些方法来获取事务相应的状态比如是否新事务、是否可以回滚等。

A、PlatformTransactionManager:事务管理接口。Spring并不直接管理事务,而是提供多种事务管理器。通过这个接口为各个平台提供对应的事务管理器。

//Platfo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值