问题 Spring的JdbcTemplate会在查询超时后关闭连接吗?


我在insert语句的方法中设置了查询超时(getJdbcTemplate()。setQueryTimeout(5))。查询超时后会发生什么,jdbc模板是否会关闭我的连接?


12371
2017-12-06 08:57


起源

可能是。 JdbcTemplate负责获取和关闭连接。 - Evgeni Dimitrov


答案:


简而言之,它确实关闭了连接。这取决于它的长期答案。

如果你没有Spring管理的交易,那么是的 JdbcTemplate 会打电话给 close() 关于的方法 Connection。但是,如果由于Springs事务管理关闭已经存在连接,则连接将由Springs事务支持处理,而Spring事务支持也会调用 close() 在...上 Connection

唯一的区别是连接关闭但是 close() 将被召唤。

如果连接将实际关闭取决于哪个 DataSource 通常在使用连接池时,连接将返回到池而不是实际关闭连接。


10
2017-12-06 09:12



是吗? close() 被称为总是被称为的方法?因为在我的程序中我需要Spring才能关闭连接,所以如果有保证的话 close() 我可以覆盖那个方法。 - Sach
如上所述,这取决于。如果您有特定问题,请提出问题,而不是通过评论。 - M. Deinum


是的,它确实。

如果连接是从连接池获得的,它实际上不会关闭连接,而是将其发送回池中。


3
2017-12-06 09:09





无需手动关闭连接。 Spring容器本身采取的操作。请参考这个春天的网址,

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


2
2018-03-08 14:54