Превышение времени ожидания для подключения к базе данных в файле свойств

Мне было интересно, есть ли конкретный способ переопределить время ожидания подключения к базе данных в файле свойств в моем веб-проекте Java? Я использую Hibernate, Spring и MySQL DB. Я пробовал несколько различных полей свойств и сократил время ожидания до 1 миллисекунды, однако соединение все еще завершено, и транзакции все еще обрабатываются должным образом.

Эти поля свойств я использовал безрезультатно...

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

Hibernate переопределяет это значение тайм-аута или я просто неправильно его установил? Заранее спасибо!

1 ответ

Предполагая, что вы используете 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

Я подозреваю, что это свойство указывает время ожидания для получения из пула соединений, а не для выполнения запроса

Другие вопросы по тегам