属性文件中数据库连接的超时超时

时间:2018-12-03 18:25:24

标签: java spring hibernate spring-mvc spring-jdbc

我想知道在Java Web项目的属性文件中是否有一种特定的方法可以覆盖数据库连接超时?我正在使用Hibernate,Spring和MySQL DB。我尝试了几个不同的属性字段,并将超时时间减少到1毫秒,但是连接仍然完成,事务仍在正确处理中。

这些是我以前无法使用的属性字段...

  • spring.jpa.properties.javax.persistence.query.timeout=1
  • spring.jdbc.template.query-timeout=1
  • hibernate.c3p0.timeout=1

休眠是覆盖此超时值还是只是设置不正确? 预先感谢!

1 个答案:

答案 0 :(得分:0)

假设您使用的是Spring Boot,则可以尝试:

spring.transaction.defaultTimeout=1

此属性将事务的defaultTimeout设置为1秒。

(查看TransactionDefinition的源代码,似乎不可能使用比秒更精确的东西。)

另请参阅:TransactionProperties


javax.persistence.query.timeout

这是Query的提示。如果您这样使用它,它应该可以工作:

entityManager.createQuery("select e from SampleEntity e")
    .setHint(QueryHints.SPEC_HINT_TIMEOUT, 1)
    .getResultList();

另请参阅QueryHints


spring.jdbc.template.query-timeout

请记住,根据JdbcTemplate#setQueryTimeout javadoc

  

在具有在事务级别指定的超时的事务内执行时,此处指定的任何超时将被剩余的事务超时覆盖。


hibernate.c3p0.timeout

我怀疑该属性指定从连接池获取超时,而不是查询执行超时