栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java数据库连接池(Druid、C3p0、DBCP)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java数据库连接池(Druid、C3p0、DBCP)

1.引言

问题:连接池是什么,有什么用? ​ 连接池:就是创建一个容器,用于装入多个Connection对象,在使用连接对象时,从容器中获取一个Connection,使用完成后,在将这个Connection重新装入到容器中。这个容器就是连接池(DataSource)也叫做数据源.

我们可以通过连接池获取连接对象. ​ 优点: ​ 节省创建连接与释放连接 性能消耗 ---- 连接池中连接起到复用的作用 ,提高程序性能. ​ 思考: ​ 连接资源宝贵,需要对连接管理,程序中连接如何管理? ​ 分析: ​ 涉及频繁的连接的打开、关闭,影响程序的运行效率! ​ 连接管理: ​ 预先创建一组连接,用的时候每次取出一个; 用完后,放回;

2.DBCP

dbcp连接池: ​

1. DBCP 是 Apache 软件基金组织下的开源连接池实现,Tomcat 的连接池正是采用该连接池来实现的。该数据库连接池既可以与应用服务器整合使用,也可由应用程序独立使用 ​

2. 使用DBCP数据源,应用程序应在系统中增加如下两个 jar 文件: ​ Commons-dbcp.jar:连接池的实现 ​ Commons-pool.jar:连接池实现的依赖库

3. 核心类:org.apache.commons.dbcp.BasicDataSource

  1. 获取方式 使用核心类:new BasicDataSource()//硬编码,Properties

2.1 dbcp.properties
username = root
password = root
url = jdbc:mysql:///java2107
driverClassName = com.mysql.jdbc.Driver
#最大连接数
maxActive = 10
#初始容量
initialSize = 5
2.2测试类
package com.qf.jdbc;
​
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.junit.Test;
​
import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;
​
public class DbcpDemo {
​
    //1.硬编码方式
    @Test
    public void test1()throws Exception{
​
        //1.获取连接池对象
        BasicDataSource basicDataSource = new BasicDataSource();
        //2.设置连接的配置
        basicDataSource.setUsername("root");
        basicDataSource.setPassword("root");
        basicDataSource.setUrl("jdbc:mysql://localhost:3306/java2107");
        basicDataSource.setDriverClassName("com.mysql.jdbc.Driver");
​
        basicDataSource.setMaxActive(10);//最大连接数
        basicDataSource.setInitialSize(5);//初始化连接数
​
        //获取连接
        Connection connection = basicDataSource.getConnection();
​
        System.out.println(connection);
​
    }
​
    //2.properties文件加载方式
    @Test
    public void test2()throws Exception{
        //加载配置文件
        InputStream resourceAsStream = DbcpDemo.class.getResourceAsStream("/dbcp.properties");
        //创建Properties
        Properties properties = new Properties();
        //加载
        properties.load(resourceAsStream);
        //获取连接池对象
        DataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
        //获取连接
        Connection connection = dataSource.getConnection();
        System.out.println(connection);
    }
​
​
}
3.C3p0

c3p0连接池: 1. C3P0是一个开源的JDBC连接池,目前使用它的开源项目有Hibernate、Spring等。 2. 引入jar文件: c3p0-0.9.1.2.jar

3. 核心类:com.mchange.v2.c3p0.ComboPooledDataSource

  1. 获取方式 使用核心类:new ComboPooledDataSource()//硬编码,Properties,xml

3.1 c3p0-config.xml

    
    
        jdbc:mysql://localhost:3306/java2107
        com.mysql.jdbc.Driver
        root
        root
        3
        6
        1000
    
        jdbc:oracle:thin:localhost:port:1521
        oracle.jdbc.driver.OracleDriver
        root
        root
        3
        6
        1000
    
3.2 测试类
package com.qf.jdbc;
​
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
​
import java.sql.Connection;
​
public class C3p0Demo {
​
    //1.硬编码方式
    @Test
    public void test1()throws Exception{
        //创建连接池对象
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
        comboPooledDataSource.setUser("root");
        comboPooledDataSource.setPassword("root");
        comboPooledDataSource.setJdbcUrl("jdbc:mysql://localhost:3306/java2107");
        comboPooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
        //获取连接
        Connection connection = comboPooledDataSource.getConnection();
​
        System.out.println(connection);
​
    }
​
    //2.使用xml方式
    @Test
    public void test2()throws Exception{
​
        //系统会识别名为c3p0-config.xml的文件
        //使用的是无参构造器创建连接池对象,使用的是默认配置
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource();
​
        Connection connection = comboPooledDataSource.getConnection();
​
        System.out.println(connection);
    }
​
    //2.使用xml方式
    @Test
    public void test3()throws Exception{
​
        //系统会识别名为c3p0-config.xml的文件
        //使用的是有参构造器创建连接池对象,使用的是指定配置
        ComboPooledDataSource comboPooledDataSource = new ComboPooledDataSource("oracle_config");
​
        Connection connection = comboPooledDataSource.getConnection();
​
        System.out.println(connection);
    }
}
4.Druid

druid:

1. 阿里出品,淘宝与支付宝专用的数据库连接池
2. 引入jar文件: druid-1.0.9.jar

3. 核心类:com.alibaba.druid.pool.DruidDataSource

  1. 获取方式 使用工厂类:DruidDataSourceFactory.createDataSource(Properties pro)

4.1 druid.properties
username = root
password = root
url = jdbc:mysql:///java2107
driverClassName = com.mysql.jdbc.Driver
#最大连接数
maxActive = 10
#初始容量
initialSize = 5
4.2 测试类
package com.qf.jdbc;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.junit.Test;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.util.Properties;


public class DruidDemo {


    @Test
    public void test1()throws Exception{
        //加载配置文件
        InputStream resourceAsStream = DruidDemo.class.getResourceAsStream("/druid.properties");
        //创建Properties
        Properties properties = new Properties();
        //加载
        properties.load(resourceAsStream);

        //使用工厂创建
        DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
        //获取连接
        Connection connection = dataSource.getConnection();

        System.out.println(connection);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/333255.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号