数据库连接池

标准接口: javax.sql.DataSource

  1. 获取连接: getConnection()

  2. 归还连接: Connection.close()

注: 如果连接对象Connection是从连接池中获取的, 那么调用Connection.close()不会再关闭连接, 而是把连接归还给连接池.

两种数据库连接池的实现

c3p0

使用步骤:

  1. 导入jar包: c3p0.jar和mchange-commons-java.jar(c3p0的依赖)

  2. 定义配置文件

<c3p0-config>
    <default-config>
        <!--连接参数-->
        <property name="driverClass">com.mysql.jdbc.Driver</property>
        <property name="jdbcUrl">jdbc:mysql://192.168.31.169:3306/study</property>
        <property name="user">root</property>
        <property name="password">1234</property>

        <!--连接池参数-->
        <!--初始化申请的连接数量-->
        <property name="initialPoolSize">5</property>
        <!--最大连接数量-->
        <property name="maxPoolSize">10</property>
        <!--超时时间-->
        <property name="checkoutTimeout">3000</property>
    </default-config>
</c3p0-config>
  • 文件名称: c3p0.properties 或者 c3p0-config.xml

  • 路径: 放在classpath(project的src目录)下

  1. 创建核心对象: 数据库连接池对象ComboPooledDataSource

  2. 获取连接: getConnection()

package DataSourceDemo;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

/**
 * c3p0的演示
 */
public class C3P0Demo {
    public static void main(String[] args) throws SQLException {
        //创建数据库连接对象
        DataSource ds = new ComboPooledDataSource();
        //获取连接对象
        Connection conn = ds.getConnection();
        //...
    }
}

druid

使用步骤:

  1. 导入jar包: druid.jar
  2. 定义配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.31.169:3306/study
username=root
password=root
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
  • properties形式
  • 文件名任意, 可放在任意目录下
  1. 加载配置文件Properties
  2. 获取数据库连接池对象: 通过工厂类DruidDataSourceFactory来获取
  3. 获取连接: getConnection()

import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;

 /**
  * Druid演示
 */
public class DruidDemo {
    public static void main(String[] args) throws Exception {
        //加载配置文件
        Properties pro = new Properties();
        InputStream is = DruidDemo.class.getClassLoader().getResourceAsStream("druid.properties");
        pro.load(is);
        //获取连接池对象
        DataSource ds = DruidDataSourceFactory.createDataSource(pro);
        //获取连接
        Connection conn = ds.getConnection();
        //...
    }
}
原文地址:https://www.cnblogs.com/goxxiv/p/14464332.html