1.java編程式事務
1.1 有返回值事務
@Autowired
private TransactionTemplate transactionTemplate;
return transactionTemplate.execute(status -> {
//業務邏輯
return null;
})
1.2 無返回值事務
@Autowired
private PlatformTransactionManager transactionManager;
DefaultTransactionDefinition transactionDefinition;
TransactionStatus transactionStatus = null;
try {
// 有事務,則使用當前事務;否則開啓新事務
transactionDefinition = new DefaultTransactionDefinition();
transactionDefinition.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
transactionStatus = transactionManager.getTransaction(transactionDefinition);
//業務代碼
transactionManager.commit(transactionStatus);
} catch (Exception e) {
if (transactionStatus != null) {
transactionManager.rollback(transactionStatus);
}
throw new RuntimeException(e);
}