我正在编写新的数据库连接代码,并认为我会尝试将proxool作为连接池实现者。
通常,程序员会确保每个DriverManager.getConnection(...)后跟一个connection.close()。
但是在使用Proxool时,是否需要关闭?我很困惑因为:
一个。这里的proxool文档 (http://proxool.sourceforge.net/quickStart.html) 显示正在调用的close(),
湾我在某个地方读到了proxool 添加关闭所有的关闭钩子 程序退出时的连接。
我的程序最重要的是性能(每秒最多200个DB写入),因此我不确定Proxool的getConnection()/ close()将如何影响性能。
我的问题是:
是否需要close(),还是可以依靠Proxool关闭我的连接?
如果我每次都必须自己明确调用close(),这不会对性能产生负面影响吗?
提前致谢。
答案 0 :(得分:7)
数据库池通常是子类/装饰连接,因此close()
方法(如果它由应用程序调用)实际上不会关闭连接,而是将其释放回池中。这样做是出于性能原因,因为每次建立新连接的成本非常高,以及为了提高用户/连接率。
那就是说,你 DO 需要调用connection.close()
,从而让游泳池知道你不再使用它,它可以被提供给下一个请求它的线程