本文主要是介绍C3P0、DBCP、Tomcat JDBC Pool 连接池区别(推荐使用JDBC Pool),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
查看资料,得知dbcp和c3p0都是单线程的,在高并发的环境下性能会非常低下,
决定换用tomcat自带的jdbc-pool,关于jdbc-pool的项目介绍。
区别参考链接:http://www.open-open.com/lib/view/open1329182303124.html
<!-- class="org.apache.tomcat.dbcp.dbcp.BasicDataSource" --><!-- class="org.springframework.jdbc.datasource.DriverManagerDataSource" -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" parent="c3p0DataSource">
推荐使用JDBC POOLTomcat 在 7.0 以前的版本都是使用 commons-dbcp 做为连接池的实现,但是 dbcp 饱受诟病,原因有:
- dbcp 是单线程的,为了保证线程安全会锁整个连接池
- dbcp 性能不佳
- dbcp 太复杂,超过 60 个类
- dbcp 使用静态接口,在 JDK 1.6 编译有问题
- dbcp 发展滞后
因此很多人会选择一些第三方的连接池组件,例如 c3p0 , bonecp, druid (@wenshao ) 等。
为此,Tomcat 从 7.0 开始引入一个新的模块:Tomcat jdbc pool
- tomcat jdbc pool 近乎兼容dbcp ,性能更高
- 异步方式获取连接
- tomcat jdbc pool 是 tomcat 的一个模块,基于 tomcat JULI,使用 Tomcat 的日志框架
- 使用 javax.sql.PooledConnection 接口获取连接
- 支持高并发应用环境
- 超简单,核心文件只有8个,比 c3p0 还少
- 更好的空闲连接处理机制
- 支持 JMX
- 支持 XA Connection
tomcat jdbc pool 的优点远不止这些,详情请看这里。
tomcat jdbc pool 可在 Tomcat 中直接使用,也可以在独立的应用中使用。
引入Maven依赖:
The default database connection pool implementation in Apache Tomcat relies on the libraries from the Apache Commons project. The following libraries are used:
Commons DBCP
Commons Pool
These libraries are located in a single JAR at $CATALINA_HOME/lib/tomcat-dbcp.jar. However, only the classes needed for connection pooling have been included, and the packages have been renamed to avoid interfering with applications.
以上是tomcat7.x的帮助文档,大意是tomcat-dbcp.jar包含了commons-dbcp和Commons Pool的内容,当然也只仅仅包含了需要数据库连接的部分,而不是全部。
这篇关于C3P0、DBCP、Tomcat JDBC Pool 连接池区别(推荐使用JDBC Pool)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!