2011-11-01 25 views
2

当使用BoneCP连接池,我碰到下面的困惑和想听到一些这方面的提醒:BoneCP:getConnection方法是线程安全的还是我们必须处理?

  • 是对BoneCP线程安全的getConnection方法?当有很多线程要求并行连接时,最好的方法是什么?
  • 每次使用连接后都需要拨打connection.close()吗?
  • 如果需要调用connection.close(),它会真的断开与数据库的连接还是只是将连接发送到池?

在此先感谢您的支持。

回答

9

BoneCP的getConnection()是线程安全的;所以你不必自己做任何事情。 是的,如果您已完成连接(这不是特定于BoneCP,但适用于任何JDBC连接),则需要致电connection.close()

与所有连接池一样,调用connection.close()将返回到连接池的连接,或者在某些情况下也关闭物理连接(但确实:这是您不应该关注的实现细节)。

在一般情况下,连接池维护与数据库的物理连接池。当您拨打getConnection()时,连接池将查找可用的物理连接并将其包装在逻辑连接中。这个逻辑连接被返回。当您的逻辑连接close()时,连接池知道物理连接再次可用以供重用。

相关问题