大家都知道可以用@Transactional來(lái)注解業(yè)務(wù)層來(lái)實(shí)現(xiàn)聲明式事務(wù)
@service
@Transactional
public class Service {
public void doSome() {
//執(zhí)行數(shù)據(jù)庫(kù)save操作
throw new Exception();
}
}
if (txInfo.transactionAttribute.rollbackOn(ex)) {
try {
txInfo.getTransactionManager().rollback(txInfo.getTransactionStatus());
}
catch (TransactionSystemException ex2) {
logger.error("Application exception overridden by rollback exception", ex);
ex2.initApplicationException(ex);
throw ex2;
}
catch (RuntimeException ex2) {
logger.error("Application exception overridden by rollback exception", ex);
throw ex2;
}
catch (Error err) {
logger.error("Application exception overridden by rollback error", ex);
throw err;
}
}
@Override
public boolean rollbackOn(Throwable ex) {
return (ex instanceof RuntimeException || ex instanceof Error);
}
事務(wù)并不會(huì)回滾,而如果 throw new RuntimeException(),則事務(wù)會(huì)回滾。