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

问题描述 投票:0回答:2

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

sql spring spring-jdbc jdbctemplate
2个回答
0
投票

答案1:

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

[当您没有Spring托管的事务时,那么JdbcTemplate将在Connection上调用close()方法。但是,如果由于Springs事务管理而关闭了连接,则该连接将由Springs事务支持处理,该事务也将在Connection上调用close()。

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

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

答案2:

是的。

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

答案3:

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

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

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


0
投票

了解数据源接口是了解此问题答案的关键。 JdbcTemplate依赖于数据源,而用于数据源接口的官方javadoc说:

数据源是用于连接到此数据源对象表示的物理数据源的工厂。

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.