连接池Connection Pool 单例设计

来源:互联网 发布:思念诗词 知乎 编辑:程序博客网 时间:2024/05/19 13:55

连接池单例模式

1.私有化ComboPooledDataSource将其作为属性,使其实现单例
2.DataSourceFactory实现懒汉模式,这样作为属性的连接池cpds也就变为了单例
3.从连接池中获取连接Connection

代码如下:

package com.tcb.dao.uitls;import java.sql.Connection;import com.mchange.v2.c3p0.ComboPooledDataSource;/* * 连接池单例模式 *  * 1.私有化ComboPooledDataSource将其作为属性,使其实现单例 * 2.DataSourceFactory实现懒汉模式,这样作为属性的连接池cpds也就变为了单例 * 3.从连接池中获取连接Connection */public class DataSourceFactory {    //1.私有化ComboPooledDataSource将其作为属性,使其实现单例    private ComboPooledDataSource cpds;    //2.DataSourceFactory实现懒汉模式    //2.1私有化构造方法--并初始化cpds    private DataSourceFactory() {        cpds = new ComboPooledDataSource("c3p0-config");    }    //2.2 私有化属性    private static DataSourceFactory sFactory = null;    //2.3 返回SessionFactory单例    public static DataSourceFactory getSessionFactoryInstance() {        if (sFactory == null) {            sFactory = new DataSourceFactory();        }        return sFactory;    }    //3.从连接池中获取连接Connection    public Connection getSession() throws Exception {        System.out.println("cpsd========="+cpds);        Connection connection = cpds.getConnection();        System.out.println("connection========="+connection);        return connection;    }    public static void main(String[] args) {        //测试        DataSourceFactory dataSourceFactory=DataSourceFactory.getSessionFactoryInstance();        DataSourceFactory dataSourceFactory2=DataSourceFactory.getSessionFactoryInstance();        try {            dataSourceFactory.getSession();            dataSourceFactory.getSession();            dataSourceFactory.getSession();        } catch (Exception e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

测试结果:

这里写图片描述

阅读全文
0 0
原创粉丝点击