,据我所知,Spring DataSourCetransactionManager中事务超时的默认行为是,它根据事务AOP设置来检查交易的开始时间并设置交易的限制时间。在这些之后,它会检查当前时间是否超过了每次通过数据源执行查询的限制时间,如果是,则TransactionManager会抛出TrassActionTimeDoutOutException。
由于上述内容,当事务服务只有一个查询执行时,我不能依赖交易限制时间。
是否有一种方法为DataSourCetransactionManager设置实时事务计时器,该计时器基于计时器线程?
语句/查询级超时(与事务级超时(可能对您有用。根据您的设置,有很多方法可以设置它们:
-
javax.persistence.query.timeout
查询提示 - Hibernate的
Query.setTimeout()
-
JDBCTemplate.setQueryTimeout()
(这也可以在全球设置( - 使用普通JDBC,我们可以在
Statement
和PreparedStatement
上设置查询超时
语句级别的超时需要驱动程序支持,因此该行为可以因实现而有所不同。另外,如果存在等不同寻常的情况,例如网络问题(但是您通常也可以设置网络级超时。(