网站建设细节,苏州网站关键词优化,企业网站源码 vue,广西网站建设定制情况一#xff1a;如果没有在程序中手动捕获异常#xff0c;如下代码事务会回滚 Transactional(rollbackFor { Exception.class })
public void test() throws Exception { doDbStuff1(); doDbStuff2();//假如这个操作数据库的方法会抛出异常#xff0c;方法doDb… 情况一如果没有在程序中手动捕获异常如下代码事务会回滚 Transactional(rollbackFor { Exception.class })
public void test() throws Exception { doDbStuff1(); doDbStuff2();//假如这个操作数据库的方法会抛出异常方法doDbStuff1()对数据库的操作会回滚。
} 如果doDbStuff2()方法抛出异常方法doDbStuff1()对数据库的操作会回滚。 情况二如果在程序中自已捕获异常未往外抛如下代码事务不会回滚 Transactional(rollbackFor { Exception.class })
public void test() { try { doDbStuff1(); doDbStuff2();//假如这个操作数据库的方法会抛出异常现在方法doDbStuff1()对数据库的操作 不会回滚。 } catch (Exception e) { e.printStackTrace(); }
} 如果doDbStuff2()这个操作数据库的方法抛出异常因为将异常捕获未往外抛方法doDbStuff1()对数据库的操作不会回滚。 情况三如果自己需要捕获异常又要返回错误时可以参考以下做法 Transactional(rollbackFor { Exception.class })
public void test() { try { doDbStuff1(); doDbStuff2(); } catch (Exception e) { e.printStackTrace(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//就是这一句了加上之后如果doDbStuff2()抛了异常,doDbStuff1()是会回滚的 return “xxx错误信息”; } } 原文https://blog.csdn.net/jarniyy/article/details/79674501转载于:https://www.cnblogs.com/panchanggui/p/11039069.html