千家信息网

数据库连接池

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

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


有四种常见的连接池框架


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安全错误 数据库的锁怎样保障安全 杭州企业冷库软件开发 如何检测公司网络安全性 专业交友软件开发公司 谷歌服务器怎么查询 软件开发符合iso标准 软件开发合同中的工作量 甘肃省网络安全保卫总队 青岛营销服务管理软件开发 为什么数据库只能读不能写 公众号软件开发方案费用 数据库生态能力全景 网络安全自由也重要吗 惠州金蝶软件开发 网络安全与信息化协调处 网络安全行业净利润 计算机网络技术有三个要点 微信聊天记录数据库怎么导出修改 数据库给值约束为小写 网络安全禁用怎么开启 聊城企业党建软件开发 网络安全保密 部队 数据库中视图的特点功能 软件开发领导压缩工期 dell 服务器h700安装 微信服务器保留数据多久 方舟生存进化会不会关闭服务器 网络安全与执法学校排名 在软件开发公司揭牌仪式领导致辞 广腾深圳互联网科技有限公司 服务器管理经验分享
0