Java 如果我不';是否仅使用SetRollback?
我见过很多使用事务的方法:在Java 如果我不';是否仅使用SetRollback?,java,spring,web,Java,Spring,Web,我见过很多使用事务的方法:在doInTransaction()方法中,使用try-catch,并在catch块中使用status.setRollBackOnly,如下所示: transactionTemplate .execute(new TransactionCallback() { public Object doInTransaction(TransactionStatus transactionStatus) {
doInTransaction()
方法中,使用try-catch,并在catch
块中使用status.setRollBackOnly
,如下所示:
transactionTemplate
.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus transactionStatus) {
try {
doThings();
} catch (Exception e) {
transactionStatus.setRollbackOnly();
return false;
}
}
});
我很好奇,如果我不使用setRollBackOnly
,当doThings()
抛出异常时,事务是否会回滚
非常感谢 我想说,这取决于例外情况的类型。通过捕获异常,您有责任决定如何继续。如果不调用setRollbackOnly(),则不会告诉事务管理器发生了什么不好的事情,因此它至少会尝试提交事务。如果异常与数据完整性有关,或者是sql异常,则不可能出现这种情况。一般来说,我不建议隐藏这些信息。@UweAllner那么,什么样的异常会导致回滚,什么不是?RuntimeException的所有子类。