没有分配变量的 getConnection() 将泄漏连接
getConnection() with out assign variable will leak a connection
我正在使用 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 语法、存储过程、此连接的功能等。
Returns:
此连接对象的 DatabaseMetaData 对象
因此getMetaData()
可用于验证连接对象的有效性,getConnection()
负责创建连接对象,getMetaData()
可用于获取与上述各点相关的信息.同样如上所述,您必须确保关闭连接以避免在使用每个连接后出现任何内存泄漏。
我正在使用 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 语法、存储过程、此连接的功能等。
Returns:
此连接对象的 DatabaseMetaData 对象
因此getMetaData()
可用于验证连接对象的有效性,getConnection()
负责创建连接对象,getMetaData()
可用于获取与上述各点相关的信息.同样如上所述,您必须确保关闭连接以避免在使用每个连接后出现任何内存泄漏。