四个流行的java连接池之DBCP篇

DBCP是Apache的一个开源数据库连接池组件,被广泛应用于各种应用服务器中,如Tomcat。DBCP分为1.3和1.4两个版本,分别对应不同的JDK和JDBC。使用DBCP能有效管理数据库连接,避免频繁创建和销毁导致的资源浪费。配置包括driver、url、username、password等属性,以及初始化连接数、最大连接数、最大空闲连接和最大等待时间等。通过示例展示了如何使用Java代码配置和初始化DBCP连接池。
摘要由CSDN通过智能技术生成

DBCP (DatabaseConnection Pool)是一个依赖Jakarta commons-pool对象池机制的数据库连接池,Tomcat的数据源使用的就是DBCP。目前 DBCP 有两个版本分别是 1.3 和 1.4。1.3 版本对应的是JDK 1.4-1.5 和 JDBC 3,而1.4 版本对应 JDK 1.6 和 JDBC 4。因此在选择版本的时候要看看你用的是什么 JDK 版本了,功能上倒是没有什么区别。

使用DBCP会用到3个包:即commons-dbcp.jarcommons-pool.jarcommons-collections.jar.

使用DBCP的好处:

   建立数据库连接是一个非常消耗资源的行为,如当有一个数据访问操作时,需要创建一个连接,当这次服务访问完成后,这个连接虽然已关闭但是还没有被销毁,这样会耗内存。当下次再有需要数据访问的操作时程序又会创建连接,如此以往既消耗时间,又要消耗资源。所以最后就使用了一种节省资源的方式,即数据库连接池的方式。DBCP的工作原理是,程序首先会初始化相应的数据库连接池,以供程序访问,当某个操作需要访问数据库时,程序会首先在连接池中取得空闲连接,如没有空闲连接在创建,用完之后归还连接池,这样达到了连接的重利用,不用频繁的创建连接和销毁,从而优化程序。

常见属性:

driver:数据库驱动,如com.mysql.jdbc.Driver

url:数据库连接,如jdbc:mysql://localhost:3306/testDB

username:数据库用户名,如root

password:数据库用户名口令,如root

initsize:初始化连接池大小

minidle:最小空闲连接

maxidle:最大空闲连接

它表示的是如果在并发的情况下,达到了maxidle=15一下面配置为例,这时连接池就必须从数据库中获取15个连接来供应程序使用,当应用连接关闭之后,由于maxikle=10并不是所有的连接都归还给了数据库,将会有10连接保存在连接池中,这时的状态就是空闲。

maxactive:最大连接,表示在并发情况下最大能从数据连接池中获取的连接数

maxwait:最大等待时间

removeabandoned:是否自动回收超时连接,boolean类型(true/false

dbcp1.2.2之后有新的支持,在这个版本中表示此属性已过期。

removeabandonedtimeout:超时时间,以秒为单位

示例(Java操作):

package com.wgy.dbcp;

import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.Properties;

importorg.apache.commons.dbcp.BasicDataSource;

public class DBCPTest {

// 连接驱动

private static String DRIVER_CLASS =null;

// 连接地址

private static String URL = null;

// 数据库用户名

private static String USER_NAME =null;

// 数据库口令

private static String PASSWORD =null;

protected Connection conn = null;

protected PreparedStatement ps =null;

protected ResultSet rs = null;

// 初始化连接

private static int initSize;

// 最大连接数

private static int maxActive;

// 最小空闲连接

private static int minIdle;

// 最大空闲连接

private static int maxIdle;

// 最大等待时间

private static int maxWait;

// 等待超时是否自动回收超时连接

private static booleanremoveAbandoned;

// 超时时间

private static intremeoveAbandonedTimeout;

// 是否事物提交

private static booleandefaultAutocommit;

// 对于数据库是否只能读取

private static booleandefaultReadonly;

// 创建数据库连接对象(数据源)

private static BasicDataSourcedataSource = new BasicDataSource();

// 配置数据源

static {

setProperty();

DataSourceConfig();

}

/**

 * 读取配置文件,并设置数据库连接池的属性

 */

private static void setProperty() {

// 创建配置文件对象

Properties props = new Properties();

// 获得配置文件输入流对象

InputStream input = DBCPTest.class

.getResourceAsStream("/dbcp.properties");

try {

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值