当连接返回到池时,BoneCP(或任何其他池)是否会关闭连接的语句?

当连接返回到池时,BoneCP(或任何其他池)是否会关闭连接的语句?据我所知,它不会调用实际连接的close方法,因此没有自动语句关闭。那么,它是以任何其他方式关闭语句还是我需要手动关闭它们?     
已邀请:
JDBC规范很清楚在正常连接关闭时应该发生什么,因此,无论您使用哪个池,您都应该始终确保手动关闭语句。如果您选择在将来切换到不符合预期的池,请考虑您的应用程序会发生什么。 至于BoneCP,答案是否定的,它不会为你关闭你的陈述,虽然它可以被配置为在忘记时关闭你的连接。这是出于性能原因,因为如果关闭连接,某些JDBC驱动程序将在内部关闭任何仍然活动的语句。 但是,如果启用了语句缓存,BoneCP将关闭所有缓存的语句。 编辑:从v0.8.0开始,已添加支持以关闭未关闭的语句(如果需要,打印出打开语句的位置的堆栈跟踪)。     
BoneCP(0.8.0 -RC3),有2条可能的结果, 仅关闭非缓存语句的某些配置 非关闭,无论您如何为缓存语句配置它,即使您显式调用statement.close()也是如此。 有一个StatementCache类来缓存preparedStatement& CallableStatement中。默认为禁用。您需要使用> 0参数调用BoneCPConfig.setStatementsCacheSize()来启用它。启用缓存后, 1如果高速缓存,则BoneCP.Statement.Close()将绕过基础语句close。
  public void close() throws SQLException {
      this.connectionHandle.untrackStatement(this);
  this.logicallyClosed.set(true);
  if (this.logStatementsEnabled){
        this.logParams.clear();
        this.batchSQL = new StringBuilder();
      }

      if (this.cache == null || !this.inCache){ // no cache = throw it away right now
           this.internalStatement.close();
  }
}
2 BoneCP.Connection.close() 只需通过“clearStatementCaches()”函数清除缓存 好消息是MYSQL JDBC驱动程序Connector / J,当你通过函数“closeAllOpenStatements()”关闭连接时将关闭所有打开的语句     

要回复问题请先登录注册