使用 spring JdbcTemplate 是否会创建到 sql 服务器的新连接?

Does using spring JdbcTemplate create a new connection to the sql server?

每次您使用 spring JdbcTemplate 时,它​​实际上是否会创建到 sql 服务器的新连接?

理解数据源接口是理解这个问题答案的关键。 JdbcTemplate 依赖于数据源和 DataSource 接口的官方 javadoc 说:

Datasource is a factory for connections to the physical data source that this datasource object represents.

这意味着每次使用 JdbcTemplate 执行 SQL 查询时,它都会从数据源请求连接。数据源从连接池中检索连接(如果可用)并将其提供给 JdbcTemplate。 JdbcTemplate 然后执行 SQL 查询并将连接释放回池中。

所以,是的,每次使用 JdbcTemplate 时我们都需要一个新连接 来执行 SQL 查询,但该连接总是从连接池中获取Datasource 接口的任何实现都维护。

维护连接池比按需创建新连接更省时。显然,考虑到内存限制,连接池大小必须有一个上限。

答案一:

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

当您没有 Spring 托管事务时,是的,JdbcTemplate 将调用 Connection 上的 close() 方法。但是,如果由于 Springs 事务管理关闭连接而已经存在可用连接,则连接将由 Springs 事务支持处理,这反过来也会在连接上调用 close()。

唯一的区别是连接关闭时会调用 close()。

如果连接实际关闭取决于使用的数据源,通常在使用连接池时,连接将返回到池而不是实际关闭连接。

答案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

Link 是: https://inneka.com/programming/spring/does-springs-jdbctemplate-close-the-connection-after-query-timeout/