BoneCP 是一个快速、免费而且开源的 java 数据库连接池 (JDBC Pool) 管理工具库。如果你曾经使用过 C3P0 或者 DBCP,那你肯定知道上面这句话的意思;如果你没用过这些,那简单的解释一下,它是一个能为你的应用管理数据库连接的工具。
项目主页:https://github.com/wwadge/bonecp
本着不重复发明轮子的原则,不应该在有了 C3P0 这种成熟的数据库连接池管理工具后再搞个新的出来,但是传说中 BoneCP 在快速这个特点上做到了极致,官方数据是 C3P0 等的 25 倍左右。
作为一个程序猿,还是有必要一探究竟。
高度可扩展, 快速的连接池。注意:
1) 不用 synchronized 关键字来处理多线程对资源的争用,而是使用 java.util.concurrent 包中的锁机制;
2) 首次使用分区机制来分开管理数据库连接;
Callback (hook interceptor) mechanisms on a change of connection state.
利用分区技术提高性能
允许直接访问一个连接或者语句
智能调整连接池大小
SQL语句缓存支持
支持异步获取数据库连接 (通过返回 Future<Connection> 的形式)
通过释放连接助理进程来释放数据库连接,提高性能
通过 initSQL 参数在每次获取连接的时候执行 SQL
支持数据库热切换
自动重试失败的数据库操作(当数据库或者网络挂掉的时候)
JMX support
延迟初始化能力 (Lazy initialization capable)
自动检测连接可用性 (keep-alives 等)
允许直接通过数据源而不是通过驱动来获取一个新的数据库连接(Allow obtaining of new connections via a datasource rather than via a Driver)
Datasource/Hibernate support capable
Debug支持准确地高亮那些已经得到但是还没有关闭的链接 (Debugging hooks to highlight the exact place where a connection was obtained but not closed)
Debug支持展示那些被关闭两次的链接地址堆栈信息 (Debugging support to show stack locations of connections that were closed twice. )
支持自定义连接池名称
干净的代码结构,TestCase 代码覆盖率达到 100% (over 125 JUnit tests).
免费的,开源的而且都是用 java 干的,最重要的是有很完整的 javadocs 支持。(Free, open source and written in 100% pure Java with complete Javadocs).