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的所有子类。