zoukankan      html  css  js  c++  java
  • 关于bonecp和QuerRunner

    之前一直以为boneCP和QueryRunner是绑定的,但是其实不是,后者来自于commons-dbUtils,BoneCP就是负责连接池。
    while preparing SQL: UPSERT INTO.... Parameters[]
    如果采用QuerRunner的exuecute,不可避免将会使用到里面的Connection.prepareStatement,prepareStatement本意是使SQL能够进行预编译,这样该SQL在多次执行的时候将会提高性能;但是前提是Driver需要支持预编译。现在看来只要走预编译,将会爆异常;所以推测phoenix的Driver应该不支持预编译。
    此时回到了bonecp的初心:我决定不采用QueryRunner对象;而是仅仅利用bonecp的连接池,然后直接。但是我纠结一个问题:从bonecp里面借来的connection用完之后是否要马上close掉?close了是不是bonecp还要再建立?是不是有开销;
    后来发现在stackoverflow中已经有人讨论过这个问题:每次都关闭;因为bonecp返回的connection其实是一个connection的包装器(ConnectionHandler);通过这个包装器的close()其实并不是物理关闭这个connection,而是还回了缓冲池,问题原来是这样(简单读了一下源码,确实没有物理关闭连接)。
    不过要注意在应用退出的时候增加一个pool的shutdown动作.
  • 相关阅读:
    python项目文件夹
    内置函数
    函数的递归
    python入门之模块
    匿名函数
    生成器表达式
    三元表达式
    列表生成式
    input相关问题总结
    表单验证
  • 原文地址:https://www.cnblogs.com/xiashiwendao/p/8504787.html
Copyright © 2011-2022 走看看