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

Suc*_*hac 6 java spring hibernate spring-boot hikaricp

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

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

但是,有很多地方长项交易在项目中没问题,我希望在那里没有超时(覆盖默认行为).我试图使用@Transactional指定的timeout参数:@Transactional(timeout = 10)在这些地方,但它不会覆盖仍然使用的默认全局值.

如何实现我的要求,最糟糕的是定义一个定制的注解,将覆盖@Transactional默认的超时,并在整个项目,我想不会有很多原因做使用此批注.

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

小智 0

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