Закрывает ли Spring JdbcTemplate соединение после таймаута запроса?

Я установил таймаут запроса (getJdbcTemplate(). setQueryTimeout (5)) в методе с инструкцией insert. Что произойдет после таймаута запроса, закрывает ли jdbc-шаблон мое соединение?

Ответ 1

Короче говоря, он закрывает соединение. Длительный ответ зависит.

Если у вас нет управляемой транзакции Spring, тогда да JdbcTemplate вызовет метод close() на Connection. Однако, если было уже доступно соединение из-за закрытия транзакций Springs, соединение будет обрабатываться поддержкой транзакций Springs, которое, в свою очередь, также вызовет close() на Connection.

Единственное различие заключается в том, что соединение закрыто, но будет вызываться close().

Если соединение будет фактически закрыто, зависит от того, какой DataSource используется, в общем случае при использовании пула соединений соединение будет возвращено в пул вместо фактического закрытия соединения.

Ответ 2

Да, да.

И если соединение было получено из пула соединений, оно фактически не закроет соединение, а отправит его обратно в пул.

Ответ 4

Мы также можем закрыть соединение при использовании jdbcTemplete, в некоторых случаях необходимо закрыть соединение после выполнения запроса, в противном случае возникает проблема с соединением. для получения более подробной информации посетите [Закрыть соединение в шаблоне jdbc] [1] [1]: http://www.javaiq.in/2019/05/jdbctemplate.html