当前位置:   article > 正文

Spring data jpa手动提交事务

jpa手动提交事务
@Service
@Slf4j
public class XXXService extends BaseService<XXX, Long>{
	@Resource
    private XXXRepository XXXRepository;
    @Resource
    private PlatformTransactionManager platformTransactionManager;
    
	public void findAndSave(....) {
		for(...){
		...
		List<XXX> xxxList=find...;
		saveAll(xxxList);
		}
	}

    @Transactional(readOnly = false)
    public void saveAll(List<XXX> xxxList) {
        DefaultTransactionDefinition transactionDefinition=new DefaultTransactionDefinition();
        transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
        TransactionStatus status = platformTransactionManager.getTransaction(transactionDefinition);
        try {
            ........
            XXXRepository.saveAll(xxxList);
            platformTransactionManager.commit(status);
        } catch (Exception e) {
            System.out.println("==========================事务回滚==============================");
            System.out.println(e.getMessage());
            platformTransactionManager.rollback(status);
            throw e;
        }
    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

注意:由于saveAll方法为内部调用,常用private\protect修饰。但Transactional只对public修饰的方法事务才有效。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/216008
推荐阅读
相关标签
  

闽ICP备14008679号