java - 没有分配变量的 getConnection() 将泄漏连接

标签 java connection-pooling

我正在使用jdbc连接池,如果我编写像这样的代码

DatabaseMetaData dbMeta = getConnection().getMetaData(); 

其中 getConnection() 结果连接对象。这是连接泄漏的结果吗? 这里返回的连接没有显式关闭。

最佳答案

根据 JavaDocs https://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html

Connection
A connection (session) with a specific database. SQL statements are executed and results are returned within the context of a connection.

getMetaData() 用于 检索 DatabaseMetaData 对象,该对象包含有关此 Connection 对象表示连接的数据库的元数据。元数据包括有关数据库表、其支持的 SQL 语法、其存储过程、此连接的功能等的信息。 返回: 此 Connection 对象的 DatabaseMetaData 对象

因此,getMetaData()可用于验证连接对象的有效性,getConnection()负责创建连接对象,getMetaData() > 可用于获取与上述要点相关的信息。另外,如上所述,您必须确保连接已关闭,以避免使用每个连接后出现任何内存泄漏。

关于java - 没有分配变量的 getConnection() 将泄漏连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49687218/

相关文章:

java - 使用 Spring SAML 从 https 加载元数据

java - 我如何能够在空对象上调用方法?

Java - 可以将方法分配给数组吗?

java - 如何在多线程环境下使用JedisPool创建多个Jedis实例

java - xml 属性中 'local name' 和 'qualified name' 之间的差异

java - Pentaho RowListener ClassNotFoundException

tomcat - 如何知道正在关闭的连接是否被放弃?

java - Tomcat JDBC连接池(释放连接)

mysql - 我需要担心使用 sequelize 的 node.js 的 mysql 连接池吗?

tomcat - 一段时间后回收 JDBC 连接