DBCP数据库连接池的一些记录

DBCP(DataBase connection pool)数据库连接池。这个技术是为了加快数据库的响应而创造的,数据库的连接时一个很费时耗资源的行为。最近,开发都是电商的web网站,大数据量的数据库,反应确实有点慢。连接池这个技术很早就接触过,但是没有一个深入的研究。说白了,连接池就是在内存中划块地方,专门用来存放预先创建好的数据库连接。这样接可以节省每次开启数据连接那一套流程的消耗。

DBCP单独使用的时候,必须要导入三个jar包:

commons-dbcp.jar
commons-pool.jar
commons-collections.jar(dbcp1.2时,必须)
 
DBCP的实现类:
 1 import java.sql.Connection;
 2 import java.sql.SQLException;
 3 import java.util.Properties;
 4 
 5 import org.apache.commons.dbcp.BasicDataSource;
 6 import org.apache.commons.dbcp.BasicDataSourceFactory;
 7 
 8 
 9 public class ConnectionSource {
10     private static BasicDataSource dataSource = null;
11     
12     public static void init(){
13         //判断数据库连接是否已经分配,如果已分配,则关闭
14         if(dataSource != null){
15             try {
16                 dataSource.close();
17             } catch (SQLException e) {
18                 // TODO Auto-generated catch block
19                 e.printStackTrace();
20             }
21             dataSource = null;
22         }
23         
24         try {
25             //配置,使用Properties,只接受这一种方式
26             Properties p = new Properties();
27             p.setProperty("driverClassName","com.mysql.jdbc.Driver");
28             p.setProperty("url", "jdbc:mysql://localhost:3306/sampledb");
29             p.setProperty("username", "root");
30             p.setProperty("password", "yflllb");
31             
32             dataSource= (BasicDataSource) BasicDataSourceFactory.createDataSource(p);
33         } catch (Exception e) {
34             // TODO: handle exception
35         }
36     }
37     
38     public static synchronized Connection getConnection() throws SQLException {
39         if(dataSource == null){
40             init();
41         }
42         Connection connection = null;
43         if(dataSource != null){
44             connection = dataSource.getConnection();
45         }
46         
47         return connection;
48     }
49 }

调用这个类的getConnection()方法,得到连接。

写java的web项目,常用到spring框架。spring3.0之后版本,按模块集成。其中就集成了DBCP,可以使用spring的配置文件来配置DBCP:

1 <!-- 定义一个DBCP实现的数据源 -->
2 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
3     destroy-method="close"
4     p:driverClassName="com.mysql.jdbc.Driver"
5     p:url="jdbc:mysql://localhost:3306/sampledb"
6     p:username="root"
7     p:password="yflllb"
8     />
原文地址:https://www.cnblogs.com/chengxuyuanxiaoye/p/3688973.html