java - Hibernate:相对于自定义@Transactional(timeout)的默认事务超时

标签 java spring hibernate spring-boot hikaricp

在我的项目中,它是基于 Spring Boot、Hibernate 和 PostgreSQL(使用 HikariCP)构建的,我想为整个应用程序设置事务超时 -> 我只是希望终止所有需要太长时间的事务,因为这些事务可以由用户请求启动,并且很容易耗尽整个连接池。

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

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

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

目前,我不知道还有其他解决方案。难道就没有更好的事情了吗? 谢谢。

最佳答案

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

关于java - Hibernate:相对于自定义@Transactional(timeout)的默认事务超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45676750/

相关文章:

java - Libgdx - Actor 的位置不正确

java - 多次限制使用公共(public)服务

xml - 在哪里可以找到示例 applicationContext.xml 文件

java - AMQP 防止自动消息读取

java - 使用可选参数在 HQL 中动态搜索查询?

java - 在 bean 工厂中找不到持久性异常翻译器。无法执行异常翻译

java - 如何从 OutputStream 获取字节 [ ] 来检索上传的文件

java - 如何检索mysql数据库中的数据。安卓工作室

java - AndroidManifest.xml 正在欺骗我): (AndroidManifest. xml : The markup in the document preceding the root element must be well-formed.)

java - 对 getSingleResult 使用可选