SpringBoot 数据库事务管理
- public方法或public类加上注解@Transactional,spring boot自动管理事务的开启,提交和回滚。private无效。
- 手动开启事务,提交和管理
添加依赖
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);
}