• 数据库连接池


    1. 概念

    数据库连接池用来管理 Connection, 这样可以重复使用 Connection. 有了池, 所以我们就不用自己来创建
    Connection 对象, 而是通过池来获取 Connection 对象. 当使用完 Connection 后, 调用 Connection
    的 close() 方法也不会真的关闭 Connection, 而是把 Connection "归还"给池.

    2. 连接池特点

    • 连接池必须实现 javax.sql.DataSource 接口(JavaSE 文档)
    • 连接池返回的 Connection 对象, 它的 close() 方法是把连接归还给池!! 而不是关闭连接.

    2. DBCP 连接池

    2.1 所需 jar 包

    • commons-dbcp;
      • commons-pool;
      • mysql-connector-java;

    2.2 使用步骤

    • 创建连接池对象;
    • 配置四大参数;
    • 配置池参数;
    • 得到连接对象;
    // 创建连接池对象
    BasicDataSource dataSource = new BasicDataSource();
    
    // 配置四大参数
    dataSource.setDriverClassName("com.mysql.jdbc.Driver");
    dataSource.setUrl("jdbc:mysql://localhost:3306/mydb1");
    dataSource.setUsername("root");
    dataSource.setPassword("root");
    
    // 配置池参数 (可选)
    dataSource.setMaxTotal(20);  // 最大连接数
    dataSource.setMinIdle(3);  // 最小空闲连接
    dataSource.setMaxWaitMillis(1000); // 最长等待时间
    
    // 得到连接对象
    Connection con = dataSource.getConnection();
    

    2.3 原理

    DBCP 连接池内部使用四大参数创建了连接对象! 即 MySQL 驱动提供的 Connection 对象.
    连接池对 MySQL 的连接对象进行了装饰, 只对 close() 方法进行了增强!!
    装饰之后的 Connection 的 close() 方法, 用来把当前连接归还给池!!而不是销毁连接.

    3. c3p0 连接池

    3.1 所需 jar 包

    • c3p0-0.9.2
    • mchange-commons
    • mysql-connector-java
    // 创建连接池对象
    ComboPooledDataSource dataSource = new ComboPooledDataSource();
    
    // 对池进行四大参数的配置
    dataSource.setDriverClass("com.mysql.jdbc.Driver");
    dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/mydb1");
    dataSource.setUser("root");
    dataSource.setPassword("root");
    
    // 池参数配置 (可选)
    dataSource.setAcquireIncrement(5); // 每次的增量
    dataSource.setInitialPoolSize(20); // 初始化连接数
    dataSource.setMinPoolSize(2); //最少连接数
    dataSource.setMaxPoolSize(50); //最多连接数
    
    // 得到连接对象
    Connection con = dataSource.getConnection();
    

    3.2 c3p0 配置文件

    • c3p0 也可以指定配置文件, 而且配置文件可以是 properties, 也可以是 xml.如果是 xml, 配置文件名
      必须为 "c3p0-config.xml",并且必须放在 "src" 目录下.
    // c3p0-config.xml
    
    <?xml version="1.0" encoding="UTF-8"?>
    <c3p0-config>
        <default-config>
            <property name="jdbcUrl">jdbc:mysql://localhost:3306/mydb1</property>
            <property name="driverClass">com.mysql.jdbc.Driver</property>
            <property name="user">root</property>
            <property name="password">root</property>
            <property name="acquireIncrement">3</property>
            <property name="initialPoolSize">10</property>
            <property name="minPoolSize">2</property>
            <property name="maxPoolSize">10</property>
        </default-config>
    </c3p0-config>
    
    
    // 使用配置文件中的默认配置信息,得到 Connection
    
        ComboPooledDataSource dataSource = new ComboPooledDataSource();
    
        Connection con = dataSource.getConnection();
    

    参考资料:

  • 相关阅读:
    一键保存网页为PDF
    Redis使用总结之与Memcached异同
    wxWidgets的安装编译、相关配置、问题分析处理
    python抓取网页图片
    bootstrap插件学习-bootstrap.popover.js
    CC.NET模板简化配置
    密码技术应用系列之开篇
    【Cocos2d-X开发学习笔记】第05期:渲染框架之布景层类(CCLayer)的使用
    ImageMagick还是GraphicsMagick?
    RESTClient 控件 从服务器获得数据集 REST
  • 原文地址:https://www.cnblogs.com/linkworld/p/7625202.html
Copyright © 2020-2023  润新知