11

我刚刚开始使用 BoneCP 并从作者站点提取了示例 JDBC 代码。

我有一个名为 getConnection() 的函数,它返回一个连接,这里是一个片段:

    // setup the connection pool
BoneCPConfig config = new BoneCPConfig();
// Config goes here.
connectionPool = new BoneCP(config); // setup the connection pool

return connectionPool.getConnection(); // fetch a connection

现在,我的问题是:1)当我完成使用从上述函数返回的连接时,我是否调用 connection.close() 以便将其返回到池中,或者这是否完全关闭了连接?如何将连接返回到池?

2)如何在应用程序退出时清理池?完成后是否调用 connectionPool.shutdown() ?而且,我在某处读到我需要单独关闭所有池连接?这是真的?

谢谢。

4

2 回答 2

19

1.完成后始终调用connection.close()以将连接返回到池(它不会物理关闭)。

2.connectionPool.shutDown()当您完全完成池并且不打算再次重新连接时调用。

于 2012-02-17T13:16:03.413 回答
2
 Connection connection = dbPool.getConnection();

从池中获得的 Connection 对象是一个包装类。即使在Exception中,它也会正确维护底层连接。

即使在与连接相关的异常中,例如TERMINATE_ALL_CONNECTIONS,BoneCP 池也会正确关闭所有底层连接。

总之,BoneCP 池使缓存透明。客户端只需要按照站立流程,

  1. 请求连接(从池中获取连接,池将决定是否重用/创建一个)
  2. 请求 PreparedStatement/CallableStatement(如果启用,则重用池中的对象
  3. 执行语句
  4. close 语句,(如果启用,则将语句对象释放到池中
  5. 关闭连接,(将连接对象释放到池中

当应用程序停止时,关闭池以释放所有缓存的连接。

boneCP.shutdown()
于 2013-09-28T04:55:09.230 回答