Spring Data JPA手动管理事务

1、简介

通常在开发中,我们都会直接使用Spring提供的@Transactional注解来管理事务。但是在某些特殊的情况下,需要我们进行手动的事务管理。例如:将数据保存到数据库后,才能发送消息到队列中的这种情况。
Spring Data JPA中提供的方法的默认实现都自带@Transactional注解,例如SimpleJpaRepository中的实现。这就意味着,即使我们不显示的标注@Transactional,也会自动的添加事务。

@Repository
// 默认添加只读事务
@Transactional(readOnly = true)
public class SimpleJpaRepository<T, ID> implements JpaRepositoryImplementation<T, ID> {
   
	...
	// DML操作添加读写事务
	@Transactional
	@Override
	public <S extends T> S save(S entity) {
   
		...
	}
	...
}

2、实现原理

那么怎样在 Spring Data JPA 中手动的管理事务呢?
这里主要用到Spring提供的三个事务相关的接口:

  • PlatformTransactionManager 事务管理器,定义了对事务的基本操作
public interface PlatformTransactionManager extends TransactionManager {
   
	
	TransactionStatus getTransaction(@Nullable TransactionDefinition definition)
			throws TransactionException;
			
	void commit(TransactionStatus status) throws TransactionException;

	void rollback(TransactionStatus status) throws TransactionException;

}
  • TransactionDefinition 事务定义接口,定义事务的基本信息,如传播行为、隔离级别、超时时间等。默认实现为DefaultTransactionDefinition。<
  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值