在使用 BoneCP 连接池时,我遇到了以下困惑,并希望听到一些关于这方面的建议:
- 是
getConnection
BoneCP线程安全的方法?当有许多线程请求并行连接时,使用它的最佳方法是什么? - 每次使用连接后是否需要调用
connection.close()
? - 如果需要调用
connection.close()
,它是真的断开与数据库的连接还是只是将连接发送到池中?
在此先感谢您的支持。
最佳答案
BoneCP的getConnection()
是线程安全的;所以你不必自己做任何事情。
是的,如果连接完成,您需要调用 connection.close()
(这不是特定于 BoneCP,而是适用于任何 JDBC 连接)。
与所有连接池一样,调用 connection.close()
会将连接返回到连接池,或者在某些情况下还会关闭物理连接(但实际上:这是您应该执行的实现细节不用担心)。
一般来说,连接池维护一个到数据库的物理连接池。当您调用 getConnection()
时,连接池会查找可用的物理连接并将其包装在一个逻辑 连接中。返回此逻辑连接。当您close()
逻辑连接时,连接池知道物理连接再次可用以供重用。
关于java - BoneCP:getConnection 方法是线程安全的还是我们必须处理它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7966093/