JDBC数据库连接池

用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。

数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标.数据库连接池正式针对这个问题提出来的。数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。

一.DBCP数据源

DBCP 是 Apache 软件基金组织下的开源连接池实现,要使用DBCP数据源,需要应用程序应在系统中增加如下两个 jar 文件:

Commons-dbcp.jar:连接池的实现

Commons-pool.jar:连接池实现的依赖库

Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用。

1.编写数据库连接池

编写dbcp连接池需实现java.sql.DataSource接口。

指定的数据源的属性可以放在配置文件中:

示例代码:

上面代码创建jdbc数据库连接池的步骤分为以下几步:

①加载dbcp的properties配置文件:配置文件中的键需要来自BasicDataSource的属性。

②调用BasicDataSourceFactory的createDataSource方法创建DataSource实例。

③从DataSource实例中获取数据库连接。

二.C3P0数据源

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

要使用C3P0数据源,需要应用程序应在系统中增加如下两个 jar 文件:

c3p0-0.9.2.jar

mchange-commons.jar

c3p0与dbcp区别:

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

c3p0有自动回收空闲连接功能

1.创建c3p0数据库连接池

同样可以将setxxx的属性放置在配置文件中:(c3p0的配置文件的格式为xml)

示例代码:

上面代码中:

①创建c3p0-config.xml文件,参考api帮助文档;

②创建ComboPooledDataSource实例:DataSource dataSource=new ComboPooledDataSource("helloC3P0");

③从DataSource实例中获取数据库连接。

至此JDBCTools中的数据库连接方法就可以改为:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181225G05UUJ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券