javaEE之几种常见的连接池

1、c3p0连接池

* 步骤:
        1. 导入jar包 (两个) 
             c3p0-0.9.5.2.jar 
            mchange-commons-java-0.2.12.jar ,
            * 不要忘记导入数据库驱动jar包
        2. 定义配置文件:

            * 名称: c3p0.properties 或者 c3p0-config.xml(文件名称必须是这两个中其中一个)

            * 路径:直接将文件放在src目录下即可。自动加载,不需要用getClassLoader()加载配置文件路径

        3. 创建核心对象 数据库连接池对象     ComboPooledDataSource
        4. 获取连接: getConnection

    * 代码:
         //1.创建数据库连接池对象
        DataSource ds  = new ComboPooledDataSource();
        //2. 获取连接对象
        Connection conn = ds.getConnection();

2、Druid连接池(阿里巴巴开发,是全球最好的连接池之一,推荐使用)

Druid:数据库连接池实现技术,由阿里巴巴提供的
        1. 步骤:
            1. 导入jar包 druid-1.0.9.jar
            2. 定义配置文件:
                * 是properties形式的
                * 可以叫任意名称,可以放在任意目录下
            3. 加载配置文件。Properties
            4. 获取数据库连接池对象:通过工厂来来获取  DruidDataSourceFactory
            5. 获取连接:getConnection
        * 代码:
             //3.加载配置文件
            Properties pro = new Properties();
            InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);
            //4.获取连接池对象
            DataSource ds = DruidDataSourceFactory.createDataSource(pro);
            //5.获取连接
            Connection conn = ds.getConnection();
        2. 定义工具类
            1. 定义一个类 JDBCUtils
            2. 提供静态代码块加载配置文件,初始化连接池对象
            3. 提供方法
                1. 获取连接方法:通过数据库连接池获取连接
                2. 释放资源
                3. 获取连接池的方法


        * 代码:
            public class JDBCUtils {

                //1.定义成员变量 DataSource
                private static DataSource ds ;

                static{
                    try {
                        //1.加载配置文件
                        Properties pro = new Properties();
                        pro.load(JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties"));
                        //2.获取DataSource
                        ds = DruidDataSourceFactory.createDataSource(pro);
                    } catch (IOException e) {
                        e.printStackTrace();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }

                /**
                 * 获取连接
                 */
                public static Connection getConnection() throws SQLException {
                    return ds.getConnection();
                }

                /**
                 * 释放资源
                 */
                public static void close(Statement stmt,Connection conn){
                   /* if(stmt != null){
                        try {
                            stmt.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }

                    if(conn != null){
                        try {
                            conn.close();//归还连接
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }*/

                   close(null,stmt,conn);
                }


                public static void close(ResultSet rs , Statement stmt, Connection conn){


                    if(rs != null){
                        try {
                            rs.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }


                    if(stmt != null){
                        try {
                            stmt.close();
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }

                    if(conn != null){
                        try {
                            conn.close();//归还连接
                        } catch (SQLException e) {
                            e.printStackTrace();
                        }
                    }
                }

                /**
                 * 获取连接池方法
                 */

                public static DataSource getDataSource(){
                    return  ds;
                }

            }

3、dbcp连接池(是 apache 上的一个Java连接池项目)

########DBCP配置文件##########
#驱动名
driverClassName=com.mysql.jdbc.Driver
#url
url=jdbc:mysql://127.0.0.1:3306/mydb
#用户名
username=sa
#密码
password=123456
#初试连接数
initialSize=30
#最大活跃数
maxTotal=30
#最大idle数
maxIdle=10
#最小idle数
minIdle=5
#最长等待时间(毫秒)
maxWaitMillis=1000
#程序中的连接不使用后是否被连接池回收(该版本要使用removeAbandonedOnMaintenance和removeAbandonedOnBorrow)
#removeAbandoned=true
removeAbandonedOnMaintenance=true
removeAbandonedOnBorrow=true
#连接在所指定的秒数内未使用才会被删除(秒)(为配合测试程序才配置为1秒)
removeAbandonedTimeout=1



public class KCYDBCPUtil {

private static Properties properties = new Properties();
private static DataSource dataSource;
//加载DBCP配置文件
static{
    try{
        FileInputStream is = new FileInputStream("config/dbcp.properties");  
        properties.load(is);
    }catch(IOException e){
        e.printStackTrace();
    }

    try{
        dataSource = BASICDATASOURCEFACTORY.createDataSource(properties);
    }catch(Exception e){
        e.printStackTrace();
    }
}

//从连接池中获取一个连接
public static Connection getConnection(){
    Connection connection = null;
    try{
        connection = dataSource.getConnection();
    }catch(SQLException e){
        e.printStackTrace();
    }
    try {
        connection.setAutoCommit(false);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return connection;
}

public static void main(String[] args) {
    getConnection();
}
 }
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!