我正在编写新的数据库连接代码,并认为我会尝试使用proxool作为连接池实现程序。
通常,程序员将确保每个DriverManager.getConnection(...)后面都带有connection.close()。
但是在使用Proxool时,需要关闭吗?我很困惑,因为:
一个。这里的proxool文档
(http://proxool.sourceforge.net/quickStart.html)
显示了被调用的close(),
b。我在某个地方读过proxool
添加关闭所有的关闭钩子
程序退出时的连接。
我的程序最关心的是性能(每秒高达200 DB写),所以我不确定Proxool的getConnection()/ close()将如何影响性能。
我的问题是:
提前致谢。
最佳答案
数据库池通常会子类化/修饰连接,因此close()
方法(如果由应用程序调用)实际上不会关闭连接,而是将其释放回池中。这样做是出于性能方面的考虑,因为每次建立新连接的成本都很高,而且为了提高用户/连接率。
就是说,您 DO 需要调用connection.close()
,从而使池知道您不再使用它,并且可以将其提供给下一个请求它的线程。