连接池Connection Pool 单例设计
连接池单例模式
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();
}
}
}
测试结果:
还没有评论,来说两句吧...