我正在使用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/