web-dev-qa-db-fra.com

Le JdbcTemplate de Spring ferme-t-il la connexion après l'expiration du délai de requête?

J'ai défini le délai d'expiration de la requête (getJdbcTemplate (). SetQueryTimeout (5)) dans la méthode avec l'instruction d'insertion. Que se passera-t-il après l'expiration du délai de requête, le modèle jdbc ferme-t-il ma connexion?

15
user3073662

Bref oui ça ferme la connexion. La réponse longue, cela dépend.

Lorsque vous n'avez pas de transaction gérée par Spring, alors oui, JdbcTemplate appellera la méthode close() sur Connection. Cependant, si une connexion était déjà disponible en raison de la fermeture de la gestion des transactions de Springs, la connexion sera gérée par le support des transactions de Springs, qui à son tour appellera également close() sur le Connection.

La seule différence est lorsque la connexion est fermée mais que close() sera appelée.

Si la connexion est réellement fermée, cela dépend de DataSource qui est utilisé, en général lors de l'utilisation d'un pool de connexions, la connexion sera retournée au pool au lieu de fermer réellement la connexion.

16
M. Deinum

Oui.

Et si la connexion a été obtenue à partir du pool de connexions, elle ne fermera pas réellement la connexion, mais la renverra plutôt au pool.

3
Abhishek Anand

Pas besoin de fermer la connexion manuellement. Récipient à ressort lui-même pour prendre de l'opération. Veuillez référer cette URL de printemps,

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html

Nous pouvons également fermer la connexion lors de l'utilisation de jdbcTemplete, dans certains cas, il est obligatoire de fermer la connexion après l'exécution de la requête, sinon un problème de connexion se produit. pour plus de détails, visitez [Fermer la connexion dans le modèle jdbc] [1] [1]: http://www.javaiq.in/2019/05/jdbctemplate.html

<pre>

jdbcTemplate.getDataSource (). getConnection (). close ();

0
Sanjeev Lahariya