spring – jdbcTemplate关闭结果集吗?

我有一个spring应用程序,其主页触发多个ajax调用,然后从DB获取数据并返回.数据库已配置连接池,minPoolSize为50,maxPoolSize为100.

现在,当我打开主页时,与DB建立了大约7个连接,预计大约有7个ajax调用,我假设它们都创建了自己的连接.现在,当我刷新页面时,我看到另外7个新连接建立(我看到来自db2监控的总共14个物理连接),这似乎是意外的,因为我假设jdbcTemplate在第一次访问和刷新查询后关闭连接在这种情况下应该重用连接?

现在问题是结果集是否也被jdbcTemplate关闭以及连接关闭?或者我是否需要显式关闭resultSet以便可以自动关闭连接.打开的resultSet可能是连接没有关闭的原因?附加连接池配置的代码

<dataSource jdbcDriverRef="db2-driver" jndiName="jdbc/dashDB-Development" transactional="true" type="javax.sql.DataSource">
<properties.db2.jcc databaseName="BLUDB" id="db2-dashDB-Development-props" password="********" portNumber="*****" serverName="*********" sslConnection="false" user="*****"/>
<connectionManager id="db2-DashDB-Development-conMgr" maxPoolSize="100" minPoolSize="50" numConnectionsPerThreadLocal="2"/>

我的初步理论是,只有达到minPoolSize才会重复使用连接,直到那时它总会创建新的物理连接.我甚至在达到这个限制后也看到了这种行为.我刷新了我的页面10次,我看到70个物理连接.现在我唯一的疑问是,连接在某种程度上没有接近,春天看到这些连接忙吗?这可能是因为结果集未关闭或其他原因?这是一种说jdbctemplate不等待结束时间超过时间限制的方法吗?

谢谢
马诺

解决方法:

如果您查看org.springframework.jdbc.core.JdbcTemplate.query方法源代码,您会看到对 –

JdbcUtils.closeResultSet(rs);

在finally块中 – 所以是的,JDBCTemplate会调用rs.close

模板还会关闭或返回到池的连接

上一篇:MockJS基础学习


下一篇:mockjs安装与配置