Превышение времени ожидания для подключения к базе данных в файле свойств - PullRequest
0 голосов
/ 03 декабря 2018

Мне было интересно, есть ли конкретный способ переопределить время ожидания соединения с базой данных в файле свойств в моем веб-проекте на 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 Ответ

0 голосов
/ 03 декабря 2018

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

Любой указанный здесь тайм-аут будет переопределен оставшимся тайм-аутом транзакции при выполнении в транзакции, для которой в транзакции указан тайм-аутlevel.


hibernate.c3p0.timeout

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

...