前言
本文讲述什么是连接池,连接池的作用,常见连接池C3P0、Druid如何使用.
一、连接池是什么?
连接池其实就是一个存放数据库连接的容器(集合)
作用:连接池的出现就是为了解决数据库连接频繁被创建和销毁造成资源浪费的问题。
原理:当系统初始化好后,连接池会被创建,它会申请一些连接对象,当用户来访问数据库时,会从连接池获取连接对象,用户访问完之后,会将连接对象归还给连接池,而不是直接销毁。
常见的连接池:C3P0、Druid
二、C3P0使用步骤
1.导包
C3P0包官网下载地址
Mysql包下载
C3P0下载
mysql包下载
2.配置
官方文档
官方文档有教你怎么配,我们这里就直接配置最常用的就行
常规配置(自取修改)
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db1?serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<!--初始化申请的连接数量-->
<property name="initialPoolSize">5</property>
<!--最大的连接数量-->
<property name="maxPoolSize">10</property>
<!--超时时间-->
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db1?serverTimezone=UTC</property>
<property name="user">root</property>
<property name="password">123</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
2.通过c3p0获取连接对象
代码(自取修改)
public class c3p0Demo {
public static void main(String[] args) throws Exception{
//1.创建数据库连接对象
DataSource ds=new ComboPooledDataSource();
//2.获取连接对象
Connection conn=ds.getConnection();
}
}
三、Druid使用步骤
1.导包
mysql包下载
2.配置
这里只做常用配置
代码自取修改
url=jdbc:mysql://localhost:3306/db1?serverTimezone=UTC
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
在这里插入代码片
3.通过Druid获取连接对象
代码自取修改
public class DruidDemo {
public static void main(String[] args) throws Exception{
//1、加载配置文件
Properties pro=new Properties();
InputStream is=DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
pro.load(is);
//2、获取数据库连接对象
DataSource ds= DruidDataSourceFactory.createDataSource(pro);
//3、获取连接
Connection comm=ds.getConnection();
}
}
总结:获取到连接对象就能对数据库进行操作了,这方面就不展开讲了