如果我有
@Transaction
的方法(具有默认隔离级别),并且毕竟它将 commit
发送到数据库,数据库设置事务对其他人可见并将响应发送回给我,但网络滞后并且我收到超时。会发生什么?交易会回滚吗?
根据Spring框架的第十七章事务管理,一般情况下,如果事务超时,就会回滚。
在使用 Spring 配合 Postgresql 数据库的情况下,使用带有超时参数的
@Transactional
注解时,如果数据库操作时间超过指定的超时时间,将会抛出 TransactionTimedOutException
,并且事务将被终止回滚了。
我还推荐这篇文章,因为它深入探讨了超时的工作原理。