SpringBoot 数据库事务管理

  1. public方法或public类加上注解@Transactional,spring boot自动管理事务的开启,提交和回滚。private无效。
  2. 手动开启事务,提交和管理

添加依赖

    compile "org.springframework.boot:spring-boot-starter-data-jpa"

在service层注入PlatformTransactionManager和TransactionDefinition

	@Autowired
	PlatformTransactionManager platformTransactionManager;

	@Autowired
	TransactionDefinition transactionDefinition;
  • 注意:使用配置的数据源时,注入PlatformTransactionManager ;如注入DataSourceTransactionManager,则会在spring boot启动过程中报错:找不到DataSourceTransactionManager的Bean。原因尚不清楚,项目中spring boot的版本是1.5.22

手动提交多个事务

//手动开启第一个事务
	TransactionStatus transactionStatusSaveData1 = platformTransactionManager.getTransaction(transactionDefinition);
	try {
		saveData();
		...
        //手动提交事务
        platformTransactionManager.commit(transactionStatusSaveData1);
 	} catch (Exception e) {
        e.printStackTrace();
        //手动回滚事务
        platformTransactionManager.rollback(transactionStatusSaveData1 );
    }
	//手动开启第二个事务
    TransactionStatus transactionStatusSaveData2 = platformTransactionManager.getTransaction(transactionDefinition);
    try {
        saveData();
        ...
        //手动提交事务
        platformTransactionManager.commit(transactionStatusSaveData2);
	} catch (Exception e) {
        e.printStackTrace();
        //手动回滚事务
        platformTransactionManager.rollback(transactionStatusSaveData2);
    }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐