每次使用spring JdbcTemplate时,它实际上是否创建到sql服务器的新连接?
答案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
了解数据源接口是了解此问题答案的关键。 JdbcTemplate依赖于数据源,而用于数据源接口的官方javadoc说:
数据源是用于连接到此数据源对象表示的物理数据源的工厂。
这意味着每次使用JdbcTemplate来执行SQL查询时,它都会从数据源请求连接。数据源从连接池中检索连接(如果有),并将其提供给JdbcTemplate。然后,JdbcTemplate执行SQL查询,并将连接释放回池中。
所以,是的,每次使用JdbcTemplate时,我们都需要一个新的连接来执行SQL查询,但是该连接始终从Datasource接口的任何实现所维护的连接池中获取。
维护连接池比按需创建新连接要省时得多。显然,考虑到内存限制,连接池大小必须有上限。