数据库连接池

连接池本质上是一组java架包,介于java应用程序与JDBC数据库物理链接之间,帮助应用程序管理链接。

通过连接池预先同数据库建立一些连接放在内存中(即连接池中),应用程序需要建立数据库连接时直接到从接池中申请一个连接使用,用完后由连接池回收该连接,从而达到连接复用,减少资源消耗的目的。

 DBCP连接池:DBCP(DataBase connection pool)数据库连接池是 apache 上的一个Java连接池项目。

需要的jar包:commons-dbcp.jar,commons-pool.jar,commons-logging.jar

1.创建连接池对象

2.获取数据连接

3.释放数据连接(将连接归还连接池)

高级配置:

1.setInitialSize()  :预置一定数量连接,保证第一次连接速度

2.setMaxTotall()  :连接最大值

3.setsetMaxWaitMillis() :设置最长等待时间

4.setMaxIdle()  :最多空闲连接数

5.setMinIdle()  :最少空闲连接数

6.空闲关闭

package com.tao.DBCP.test;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.commons.dbcp.BasicDataSource;


public class DBCPtest {
    public final static String DRIVE_NAME="com.mysql.jdbc.Driver";
    public final static String USER_NAME="root";
    public final static String PASSWORD="admin";
    public final static String DB_URL="jdbc:mysql://localhost:3306/schoolweb?useUnicode=true&characterEncoding=utf8";
    public static BasicDataSource ds;
    
    public static void dbpoolInit(){
        ds=new BasicDataSource();
        ds.setUrl(DB_URL);
        ds.setDriverClassName(DRIVE_NAME);
        ds.setPassword(PASSWORD);
    }

    public void dbPollTest() {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        try {
            conn = ds.getConnection();
            stmt = conn.createStatement();
            rs = stmt.executeQuery("select * from schoolweb");
            while (rs.next()) {
                System.out.println(rs.getString("name"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
                if (stmt != null)
                    stmt.close();
                if (rs != null)
                    rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    public static void main(String[] args){
        dbpoolInit();
        new DBCPtest().dbPollTest();
    }
    
}
原文地址:https://www.cnblogs.com/handsometaoa/p/14258824.html