您的位置:首页 > 编程语言 > Java开发

几个主流的Java连接池整理

2017-09-22 17:35 197 查看
原文链接:http://blog.csdn.net/wang_shuyu/article/details/53574839

数据库连接的设计上有三种思路,第一是对于每一个用户都创建一个连接,等到该用户访问完就将数据库连接释放。第二种是设置一个静态连接变量,所有用户都使用该连接。第三种就是使用数据库连接池。

在系统初始化的时候,将数据库连接作为对象存储在内存中,当用户需要访问数据库时,并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。

 JDBC数据库连接池的实现必须实现javax.sql.DataSource接口,其中DataSource称为数据源,该数据源的实现有以下三种: 
  C3p0:C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。c3p0是异步操作的,缓慢的JDBC操作通过帮助进程完成。扩展这些操作可以有效的提升性能。目前使用它的开源项目有hibernatespring等。c3p0有自动回收空闲连接功能。 
  DBCP:是Apache上的一个 Java连接池项目,也是
tomcat使用的连接池组件。单独使用dbcp需要3个包:
common-dbcp.jar
,
common-pool.jar
,
common-collections.jar
由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。dbcp没有自动的去回收空闲连接的功能。 
  Proxool:Proxool是一种Java数据库连接池技术,是sourceforge下的一个开源项目,这个项目提供一个健壮、易用的连接池,最为关键的是这个连接池提供监控的功能,方便易用,便于发现连接泄漏的情况。

      DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况,可以说是针对监控而生的DB连接池(据说是目前最好的连接池,不知道速度有没有BoneCP快)。
  对比结果: 
  性能
dbcp<=c3p0<proxool
 
  稳定性
dbcp>=c3p0>proxool
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库连接池