BoneCP正确用法

时间:2012-02-17 11:54:17

标签: java mysql jdbc connection-pooling bonecp

我刚开始使用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()吗?而且,我读到某个地方我需要单独关闭所有池化连接?这是真的吗?

感谢。

2 个答案:

答案 0 :(得分:18)

1。完成后,请始终呼叫connection.close()以恢复与池的连接(它不会在物理上关闭)。

2。当您完成游泳池并且没有计划再次重新连接时,请致电connectionPool.shutDown()

答案 1 :(得分:1)

 Connection connection = dbPool.getConnection();

从池中获取的Connection对象是一个包装类。即使在例外中,它也会正确维护基础连接。

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

总之,BoneCP池使缓存透明。客户方只需遵循立场流程,

  1. 请求连接(从池中获取连接,池将决定是否重新使用/创建一个)
  2. 请求PreparedStatement / CallableStatement(从池中重用该对象(如果已启用)
  3. 执行陈述
  4. 关闭语句,(如果启用了语句对象,则将其释放到池中
  5. 关闭连接,(释放连接对象到池
  6. 当应用程序停止时,关闭池以释放所有缓存的连接。

    boneCP.shutdown()