连接池就是在用户量特别多的情况下,创建一个池子存放很多connection连接,等待客户来连接。减少了数据库服务器的创建,节省资源
一、DBCP连接池
DBCP(DataBase Connection Pool),[数据库连接池]。是 apache 上的一个 java 连接池项目,也是 tomcat 使用的连接池组件。单独使用dbcp需要2个包:commons-dbcp.jar,commons-pool.jar由于建立数据库连接是一个非常耗时的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用完后再放回去。
//DBCP连接池 使用静态代码块 加载配置文件 创建DBCP连接池
//此静态代码块主要是为了获得一个BasicDataSource连接池对象,再可以通过BasicDataSource的一个getConnection()获取每一个连接Connection
private static BasicDataSource dataSource;
static {
//使用类加载器加载文件 DbUtils_1是本类的类名
InputStream is =
DbUtils_1.class.getClassLoader().getResourceAsStream("DBCP.properties");
//加载文件
Properties properties = new Properties();
try {
properties.load(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("配置文件加载失败!");
}
try {
dataSource = BasicDataSourceFactory.createDataSource(properties); //得到了连接池对象
// System.out.println(dataSource.hashCode());
} catch (Exception e) {
e.printStackTrace();
System.out.println("创建DBCP连接池失败!");
}
}
#DBCP配置文件 properties文件
#属性不可改变!值可以改!
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/school
username=root
password=root
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxTotal=50
#<!-- 最大空闲连接 -->
maxIdle=20
#<!-- 最小空闲连接 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWaitMillis=5000
二、c3p0连接池
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
private static ComboPooledDataSource dataSource;
static {
//c3p0连接池
dataSource= new ComboPooledDataSource();
}
#c3p0属性文件 名称必须为 c3p0.properties 文件!
#属性不可以修改!值可以修改
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/school
c3p0.user=root
c3p0.password=root
c3p0.acquireIncrement=5
c3p0.initialPoolSize=20
c3p0.minPoolSize=10
c3p0.maxPoolSize=40
c3p0.checkoutTimeout=5000
三、Druid连接池
Druid 是目前比较流行的高性能的,分布式列存储的OLAP框架(具体来说是MOLAP)
#Druid连接池也是为了获取DataSource连接池对象 通过对象的getConnection()来获取连接
private static DataSource dataSource;
static {
//使用Druid连接池
//使用类加载器加载文件
InputStream is = DbUtils_1.class.getClassLoader().getResourceAsStream("Druid.properties");
//加载文件
Properties properties = new Properties();
try {
properties.load(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
System.out.println("配置文件加载失败!");
}
try {
//通过Druid的连接池工厂创建线程池
dataSource = DruidDataSourceFactory.createDataSource(properties);
// System.out.println(dataSource.hashCode());
} catch (Exception e) {
e.printStackTrace();
System.out.println("创建DBCP连接池失败!");
}
}
#Druid配置文件 属性名不可更改! properties文件
#连接设置
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/school
username=root
password=root
#<!-- 初始化连接 -->
initialSize=10
#最大连接数量
maxActive=50
#<!-- 最小空闲连接 -->
minIdle=5
#<!-- 超时等待时间以毫秒为单位 6000毫秒/1000等于60秒 -->
maxWait=5000