连接池是管理数据库连接的一种机制,能够控制连接的个数,默认情况下可以预先创建可用的连接。
有四种常见的连接池框架
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