繁体   English   中英

Hibernate:关于自定义 @Transactional(timeout) 的默认事务超时

[英]Hibernate: default transaction timeout with respect to custom @Transactional(timeout)

在我的项目中,它建立在 Spring Boot、Hibernate 和 PostgreSQL(使用 HikariCP)上,我想为整个应用程序设置事务超时 -> 我只想终止所有花费太长时间的事务,因为这些事务可能由用户请求启动,它很容易以耗尽整个连接池而告终。

我知道如何设置默认事务超时的一些方法,例如通过 Spring Boot 属性spring.transaction.default-timeout或通过在HibernateTransactionManager上设置defaultTimeout属性。 两种解决方案都运行良好。

但是,项目中有很多地方可以进行长事务,我希望那里没有超时(覆盖默认行为)。 我试着使用@Transactional具有指定timeout参数: @Transactional(timeout = 10)在这些地方,但它并没有超越其仍然使用而不是默认的全局值。

如何实现我的要求的最糟糕的方法是定义一个自定义注释,该注释将使用默认超时覆盖@Transactional并在整个项目中使用此注释,出于多种原因,我不想这样做。

目前,我不知道任何其他解决方案。 没有更好的吗? 谢谢。

我建议将长时间运行的作业移到单独的服务应用程序中,您可以在其中设置更长的事务超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM