数据库连接池

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


有四种常见的连接池框架


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


2, C3P0连接池


3, proxcool连接池


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


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


& lt; dependency>

& lt; groupId> mysql

& lt; artifactId> mysql-connector-java

& lt; version> 8.0.16

& lt;/dependency>

& lt; !——https://mvnrepository.com/artifact/com.mchange/c3p0——在

& lt; dependency>

& lt; groupId> com.mchange

& lt; artifactId> c3p0

& lt; version> 0.9.5.4

& lt;/dependency>

& lt; !——https://mvnrepository.com/artifact/org.apache.commons/commons-dbcp2——在

& lt; dependency>

& lt; groupId> org.apache.commons

& lt; artifactId> commons-dbcp2

& lt; version> 2.6.0

& lt;/dependency>

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


包com.neusoft.busmis.fatory;

进口java.sql.Connection;

进口javax.sql.DataSource;

进口org.apache.tomcat.dbcp.dbcp2.BasicDataSource;

//DBCP连接池

公共类ConnectionFactoryWithDBCP {

私有静态数据源ds=零;静态{

BasicDataSource bds=new BasicDataSource ();

bds.setDriverClassName (“com.mysql.jdbc.Driver”);

bds.setUrl (" jdbc: mysql://localhost: 3306/busmis ? serverTimezone=% 2 b8格林尼治时间”),

bds.setUsername(“根”);

bds.setPassword (“123456”);

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

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

bds.setMaxIdle (2);

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

ds=bds;

}

公共静态连接getConnection()抛出异常{

返回ds.getConnection ();}

}

包com.neusoft.busmis.fatory;

进口java.sql.Connection;

进口javax.sql.DataSource;

进口com.mchange.v2.c3p0.ComboPooledDataSource;

公共类ConnectionFactoryWithC3P0 {

私有静态数据源ds=零;静态{

ComboPooledDataSource cpd=new ComboPooledDataSource ();

尝试{

cpds.setDriverClass (“com.mysql.jdbc.Driver”);

cpds.setJdbcUrl (" jdbc: mysql://localhost: 3306/busmis ? serverTimezone=% 2 b8格林尼治时间”),

cpds.setUser(“根”);

cpds.setPassword (“123456”);

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

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

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

}捕捉(异常e) {

//TODO自动生成的catch块

e.printStackTrace ();}

ds=cpd;

}

公共静态连接getConnection()抛出异常{

返回ds.getConnection ();}

公共静态数据源getDataSource()抛出异常{

返回ds;

}

}

三,将连接池放到JNDI


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


在tomcat的上下文。xml里配置数据库信息。


& lt;资源name=" mysql3306busmis-dbcp "

auth=叭萜鳌?/p>

type=" javax.sql.DataSource "

工厂=皁rg.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory”

maxActive=?”

maxIdle=?”

maxWait=" 100 "

用户名="根"

密码=案?/p>

driverClassName=癱om.mysql.jdbc.Driver”

url=" jdbc: mysql://localhost: 3306/busmis吗?serverTimezone=% 2 b8格林尼治时间"/祝辞null

数据库连接池