千家信息网

数据库连接池

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,连接池是管理数据库连接的一种机制,能够控制连接的个数,默认情况下可以预先创建可用的连接。有四种常见的连接池框架1、Apache的DBCP连接池(Tomcat内置了DBCP)2、C3P0连接池3、pro
千家信息网最后更新 2026年11月02日数据库连接池

连接池是管理数据库连接的一种机制,能够控制连接的个数,默认情况下可以预先创建可用的连接。


有四种常见的连接池框架


1、Apache的DBCP连接池(Tomcat内置了DBCP)


2、C3P0连接池


3、proxcool连接池


4、阿里公司的德鲁伊框架。


一、引入Maven(只记录了DBCP和C3P0的使用)


mysql

mysql-connector-java

8.0.16

com.mchange

c3p0

0.9.5.4

org.apache.commons

commons-dbcp2

2.6.0

二、创建连接池,DataSource有提供getConnection接口。这里采用工厂模式获取数据库连接池的连接。


package com.neusoft.busmis.fatory;

import java.sql.Connection;

import javax.sql.DataSource;

import org.apache.tomcat.dbcp.dbcp2.BasicDataSource;

//DBCP连接池

public class ConnectionFactoryWithDBCP {

private static DataSource ds = null;

static {

BasicDataSource bds = new BasicDataSource();

bds.setDriverClassName("com.mysql.jdbc.Driver");

bds.setUrl("jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8");

bds.setUsername("root");

bds.setPassword("123456");

bds.setInitialSize(1); //设置初始的连接个数

bds.setMaxTotal(2); //设置最大连接数

bds.setMaxIdle(2);

bds.setMaxWaitMillis(2000); //设置等待时间

ds = bds;

}

public static Connection getConnection() throws Exception{

return ds.getConnection();

}

}

package com.neusoft.busmis.fatory;

import java.sql.Connection;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class ConnectionFactoryWithC3P0 {

private static DataSource ds = null;

static {

ComboPooledDataSource cpds = new ComboPooledDataSource();

try {

cpds.setDriverClass("com.mysql.jdbc.Driver");

cpds.setJdbcUrl("jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8");

cpds.setUser("root");

cpds.setPassword("123456");

cpds.setMinPoolSize(1); //设置最小的连接个数

cpds.setAcquireIncrement(1);//每次新增的连接个数

cpds.setMaxPoolSize(10);//设置最大的连接个数

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

ds = cpds;

}

public static Connection getConnection() throws Exception{

return ds.getConnection();

}

public static DataSource getDataSource() throws Exception{

return ds;

}

}

三、将连接池放到JNDI


因为在java的机制,如果太久没使用一个引用,就会自动清除,不能避免地有时候会重复地进行销毁、创建的动作。所以将连接池配置放在JNDI上,让它在服务器启动时就一直存在。


在tomcat的context.xml里配置数据库信息。


auth="Container"

type="javax.sql.DataSource"

factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"

maxActive="5"

maxIdle="3"

maxWait="100"

username="root"

password="root"

driverClassName="com.mysql.jdbc.Driver"

url="jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8" />

http://www.renrendoc.com/p-21933469.html

郑州不孕不育医院:http://www.zzchyy110.com/

type="com.mchange.v2.c3p0.ComboPooledDataSource"

factory="org.apache.naming.factory.BeanFactory"

driverClass="com.mysql.jdbc.Driver"

jdbcUrl="jdbc:mysql://localhost:3306/busmis?serverTimezone=GMT%2B8"

user="root"

password="root"

minPoolSize="1"

maxPoolSize="4"

maxIdleTime="1800"

acquireIncrement="1"

maxStatements="0"

initialPoolSize="1"

idleConnectionTestPeriod="60"

acquireRetryAttempts="30"

acquireRetryDelay="1000"

testConnectionOnCheckin="false"

breakAfterAcquireFailure="false"

testConnectionOnCheckout="false"/>

DBCP最主要的是drivereClassName(数据库驱动)、url(数据库地址)、username(数据库用户名)、password(数据库驱动)、name(Resource的名字)、maxIdle(最大空闲数)、maxActive(最大活动数)、auth(连接池的管理者,Container表示交给Tomcat管理)、maxWait(最大等待时间ms)、type(DataSource类)。


注:如果使用JNDI方式,必须将项目发布到Web才能生效。


工厂模式创建连接,用Context类的lookup来找配置信息,java:/comp/env/name。


package com.neusoft.busmis.fatory;

import java.sql.Connection;

import javax.naming.Context;

import javax.naming.InitialContext;

import javax.sql.DataSource;

public class ConnectionFactoryWithJNDI {

private static DataSource ds = null;

static {

try {

Context ct = new InitialContext();

ds = (DataSource)ct.lookup("java:/comp/env/mysql3306busmis-c3p0");

ct.close();

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() throws Exception{

return ds.getConnection();

}

}


数据 数据库 最大 个数 管理 配置 信息 工厂 时间 机制 框架 模式 驱动 最小 不孕不育 公司 动作 医院 名字 地址 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 江苏根荣互联网科技 互联网金融与金融科技 浩特互联网科技 百单互联网科技有限公司 天津摩尔互联网科技 互联网女皇 腾讯科技 广州凡科互联网科技 广西互联网科技公司 互联网科技公司介绍 互联网科技创新企业排名 温州喔噻互联网科技有限公司 阿里巴巴算科技企业还是互联网 互联网金融中的现代科技 工业互联网展湾科技股份有限公司 电子商务与互联网科技的关系 广东工业互联网大赛深圳学泰科技 35岁以上互联网科技行业 南京一网一红互联网科技有限公司 青岛互联网科技园 银川新华互联网科技学校招聘 华服互联网科技靠谱吗 鸠鸠互联网科技 互联网科技集团 广州善班互联网科技 互联网金融中的现代科技 知域互联网科技有限公司大骗子 科技类公司包括互联网吗 西安左小互联网科技有限公司 互联网科技快速发展优美句子 科技发展第三阶段互联网时代
0