java中数据库连接池框架c3p0和dbcp的区别

java中数据库连接池框架c3p0和dbcp的区别,第1张

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。

c3p0与dbcp区别:

dbcp没有自动的去回收空闲连接的功能 c3p0有自动回收空闲连接功能

两者主要是对数据连接的处理方式不同!C3P0提供最大空闲时间,DBCP提供最大连接数。

前者当连接超过最大空闲连接时间时,当前连接就会被断掉。DBCP当连接数超过最大连接数时,所有连接都会被断开。

1

dbcp

dbcp可能是使用最多的开源连接池,原因大概是因为配置方便,而且很多开源和tomcat应用例子都是使用的这个连接池吧。

这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。这个连接池的配置参见附件压缩包中的:dbcp.xml

使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性还是可以,不过速度稍慢,在大并发量的压力下稳定性

有所下降,此外不提供连接池监控

2

c3p0

c3p0是另外一个开源的连接池,在业界也是比较有名的,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

这个连接池的配置参见附件压缩包中的:c3p0.xml。

使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性相当不错,在大并发量的压力下稳定性也有一定保证,

此外不提供连接池监控。

3

proxool

proxool这个连接池可能用到的人比较少,但也有一定知名度,这个连接池可以设置最大和最小连接,连接等待时间等,基本功能都有。

这个连接池的配置参见附件压缩包中的:proxool.xml。

使用评价:在具体项目应用中,发现此连接池的持续运行的稳定性有一定问题,有一个需要长时间跑批的任务场景任务,同样的代码

可以使用c3p0做为数据库连接池。它配置和使用都非常方便。

hibernate默认使用c3p0做为数据库连接池,而且c3p0也可以与Spring框架方便的集成在一起。

下面的代码演示了如何在Spring中配置c3p0数据库连接池:

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"

destroy-method="close">

<property name="driverClass" value="org.postgresql.Driver" />

<property name="jdbcUrl" value="jdbc:postgresql://127.0.0.1:5432/db_demo" />

<property name="user" value="postgres" />

<property name="password" value="123456" />

<property name="maxPoolSize" value="15" />

<property name="minPoolSize" value="1" />

<property name="initialPoolSize" value="3" />

</bean>

c3p0在sourceforge网站上发布的,描述如下:

c3p0 is an easy-to-use library for augmenting traditional (DriverManager-based) JDBC drivers with JNDI-bindable DataSources, including DataSources that implement Connection and Statement Pooling, as described by the jdbc3 spec and jdbc2 std extension.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9916193.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-03
下一篇 2023-05-03

发表评论

登录后才能评论

评论列表(0条)

保存