JDBC - 学习7 -连接池C3P0、DBCP -- 获取Connection连接

news/2024/5/18 22:59:24 标签: JDBC, 连接池, C3P0, DBCP, Druid

文章目录

      • 1. 连接池的简介
      • 2. C3P0 - 连接池
        • 2.1 硬编码获取连接
        • 2.2 配置文件进行获取连接对象
      • 3. DBCP - 连接池
        • 3.1 硬编码获取连接
        • 3.2 配置文件获取连接
      • 4. Druid - 连接池
        • 4.1 硬编码获取连接
        • 4.2 配置文件获取连接

1. 连接池的简介

连接池 为数据库建立一个缓冲池,预先在缓冲池中放入一定数量的Connection对象连接,使用时,直接从缓冲池中取就行,不用时放回到缓冲池中

连接池的优点
负责分配、管理、释放数据库连接
允许数据库重复使用Connection连接,而不是重新创建要给
常用连接池
DBCP:Tomcat服务自带,速度较快,不稳定
C3P0:速度较慢、稳定性还可以
Proxool:具有监控连接池状态,稳定性比C3P0
Druid:阿里提供的,集齐上述三个连接池的所有优点

C3P0___23">2. C3P0 - 连接池

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HyCDeVYE-1574125805829)(en-resource://database/9785:1)]

2.1 硬编码获取连接

public static Connection getConnection1() throws Exception{
    
    // 1. 获取数据库连接池
    ComboPooledDataSource cpds = new ComboPooledDataSource();
    
    // 2. 连接数据库
    cpds.setDriverClass("oracle.jdbc.driver.OracleDriver");
    cpds.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");
    cpds.setUser("scott");
    cpds.setPassword("123456");

    // 3. 设置数据库初始的连接数
    cpds.setInitialPoolSize(10);

    // 4. 获取Conenction连接对象
    Connection conn1 = cpds.getConnection();

    System.out.println(conn1);

    return conn1;
}

2.2 配置文件进行获取连接对象

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lxgQvIwa-1574125805839)(en-resource://database/9777:1)]

public static Connection getConnection2() throws Exception{

    // 1. 获取数据库连接池
    ComboPooledDataSource cpds = new ComboPooledDataSource();
    
    // 2. 读取配置文件信息
    Properties p = new Properties();
    InputStream is = new FileInputStream("E:\\eclipse\\workspace\\学习\\src\\top\\linruchang\\connectionPool\\c3p0.properties");
    p.load(is);
    String driverClass = p.getProperty("driverClasss");
    String url = p.getProperty("url");
    String user = p.getProperty("user");
    String password = p.getProperty("password");
    String initialPoolSize = p.getProperty("initialPoolSize");

    // 3. 利用配置文件的信息进行连接数据库
    cpds.setDriverClass(driverClass);
    cpds.setJdbcUrl(url);
    cpds.setUser(user);
    cpds.setPassword(password);
    cpds.setIdentityToken(initialPoolSize);


    // 4. 获取Connection连接对象

    Connection conn = cpds.getConnection();

    System.out.println(conn);

    return conn;
}

DBCP___101">3. DBCP - 连接池

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YVFNosjb-1574125805850)(en-resource://database/9783:1)]

3.1 硬编码获取连接

public static Connection getConnection1() throws SQLException {

    // 1. 创建数据库连接池
    BasicDataSource source = new BasicDataSource();

    // 2. 设置基本信息
    source.setDriverClassName("oracle.jdbc.driver.OracleDriver");
    source.setUrl("jdbc:oracle:thin:@localhost:1521:orcl");
    source.setUsername("scott");
    source.setPassword("123456");
    source.setInitialSize(10);

    // 3. 获取数据库连接池的Connection对象
    Connection conn = source.getConnection();

    System.out.println(conn);

    return conn;

}

3.2 配置文件获取连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SGkd2r5t-1574125805852)(en-resource://database/9779:1)]

public static Connection getConnection2() throws Exception{
    
    // 1. 获取配置文件
    Properties pro = new Properties();
    FileInputStream fis = new FileInputStream("E:\\eclipse\\workspace\\学习\\src\\top\\linruchang\\connectionPool\\dbcp.properties");
    pro.load(fis);;

    // 2. 加载配置文件到 数据源总
    BasicDataSource source = BasicDataSourceFactory.createDataSource(pro);
    
    // 3. 获取连接
    Connection conn = source.getConnection();

    System.out.println(conn);

    return conn;

}

Druid___163">4. Druid - 连接池

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DFwUmxDe-1574125805858)(en-resource://database/9787:1)]

4.1 硬编码获取连接

public static Connection getConnection1() throws SQLException {

    // 1. 获取数据源
    DruidDataSource source = new DruidDataSource();

    // 2. 设置数据源连接数据库的信息
    source.setDriverClassName("oracle.jdbc.driver.OracleDriver");
    source.setUrl("jdbc:oracle:thin:@localhost:1521:orcl");
    source.setUsername("scott");
    source.setPassword("123456");

    // 3. 获取连接
    Connection conn = source.getConnection();

    System.out.println(conn);

    return conn;
}

4.2 配置文件获取连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bYsrBqGs-1574125805862)(en-resource://database/9781:1)]

public static  Connection getConnection2() throws Exception {

    // 1. 获取配置文件
    Properties pro = new Properties();
    FileInputStream fis = new FileInputStream("E:\\eclipse\\workspace\\东软\\src\\top\\linruchang\\connectionPool\\druid.properties");
    pro.load(fis);

    // 2. 将配置文件加载到数据源中
    DataSource source = DruidDataSourceFactory.createDataSource(pro);

    // 3. 获取连接
    Connection conn = source.getConnection();

    System.out.println(conn);

    return conn;
}

http://www.niftyadmin.cn/n/1658155.html

相关文章

控制面板设置java_win10系统打开java控制面板的具体技巧

win10系统使用久了,好多网友反馈说关于对win10系统打开java控制面板设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统打开java控制面板进行设置,有什么好的办法去设置win10系统打开java控制面板呢?在这里小编教你只…

php跳转 原理,PHP的简单跳转提示的实现详解

在PHP开发中,尤其是MVC框架或者项目中,会碰到很多跳转情况,比如:登录成功或失败后的跳转等等。以下以MVC框架开发中为基础,示例讲解:在基础控制器类中:Conrtoller.class.php/*** 基础控制器类*/…

JDBC - 学习8 - Apache-DBUtil类库的使用

文章目录1. 介绍2. QueryRunner2.1 更新操作 - 增删改2.2 查询操作2.2.1 单条记录查询 - BeanHandler2.2.2 多条记录查询 - BeanListHandler2.2.3 用于查询特殊值的单行函数 - ScalarHandler2.2.4 自定义结果集的处理器2.2.5 单条记录查询 - MapHandler2.2.6 多条记录查询 - Ma…

php 嵌套 json数据,PHP实例:php如何在json里嵌套一个json

常见需求&#xff1a;把一个父栏目下的子栏目循环出来&#xff0c;每个子栏目下再显示最新的几篇内容。<?php $servername "localhost";$username "root";$password "root";$dbname "test";// 创建连接$conn new mysqli($ser…

php工作日,计算工作日(jessie看)-PHP教程,PHP应用

现在还有问题周一&#xff0c;周二不能做节假日可能算法上还有问题&#xff0c;等待你的更新…/*** sports98* flyrunshotmail.com (欢迎交流)*/计算工作日(计算一年内)body,td {font-size:12px}工作日计算器(计算一年内)开始日期:-01-01">结束日期:">周休息数…

java语法基础 - 第七部分 - File,Properties,Path,Files

文章目录1. 文件1.1 File1.1.1 方法讲解1.1.2 具体应用1.1.2.1 查找某个目录下的某个文件1.2 Properties - 可读写配置文件获取配置文件数据修改配置文件数据1.3. Path1.4 Files -- 文件的操纵1.4.1 简略1.4.2 常用方法介绍1. 文件 1.1 File 1.1.1 方法讲解 唯一与文件、文件…

java语法基础 - 第八部分 - IO流

文章目录2. IO流 - ( input/output流 )2.1 分类2.2 具体的流类2.2.1 字节输入流、输出流( InputStream、OutputStream ) -- 永远是根基FileInputStream、FIleOutputStream2.2.2 字符输入流、输出流( InputReader、OutputWriter )FileReader、FileWriter2.2.3 转换流OutputStrea…

新建一个php脚本,PHP新建类问题分析及解决思路

这篇文章给大家介绍php新建类相关问题分析及解决办法&#xff0c;涉及到php新建类相关知识&#xff0c;本文介绍的非常详细&#xff0c;非常具有参考借鉴价值特此分享供大家参考下面先给大家分析php新建类的问题index.php文件function __autoload($_className) {require $_clas…