Я установил таймаут запроса (getJdbcTemplate(). setQueryTimeout (5)) в методе с инструкцией insert. Что произойдет после таймаута запроса, закрывает ли jdbc-шаблон мое соединение?
Закрывает ли Spring JdbcTemplate соединение после таймаута запроса?
Ответ 1
Короче говоря, он закрывает соединение. Длительный ответ зависит.
Если у вас нет управляемой транзакции Spring, тогда да JdbcTemplate
вызовет метод close()
на Connection
. Однако, если было уже доступно соединение из-за закрытия транзакций Springs, соединение будет обрабатываться поддержкой транзакций Springs, которое, в свою очередь, также вызовет close()
на Connection
.
Единственное различие заключается в том, что соединение закрыто, но будет вызываться close()
.
Если соединение будет фактически закрыто, зависит от того, какой DataSource
используется, в общем случае при использовании пула соединений соединение будет возвращено в пул вместо фактического закрытия соединения.
Ответ 2
Да, да.
И если соединение было получено из пула соединений, оно фактически не закроет соединение, а отправит его обратно в пул.
Ответ 3
Не нужно закрывать соединение вручную. Spring сам контейнер для выполнения операции. Пожалуйста, отсылайте этот Spring url,
http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html
Ответ 4
Мы также можем закрыть соединение при использовании jdbcTemplete, в некоторых случаях необходимо закрыть соединение после выполнения запроса, в противном случае возникает проблема с соединением. для получения более подробной информации посетите [Закрыть соединение в шаблоне jdbc] [1] [1]: http://www.javaiq.in/2019/05/jdbctemplate.html