一、连接池的作用

数据库的连接是一种很重要的资源,如果一个项目比较小,连接数据库的次数比较少,我们可以采取直连的方式:“获取连接----使用----关闭连接”。但是如果一个网站访问量很大,假如同时有几百万个用户,这时候就会创建几百万个连接,这样就很容易使数据库崩溃,从而使网站瘫痪。这时候数据库的连接池技术就可以起到作用了,维护连接池中的连接个数,如果来个请求连接,先看连接池中是否有空闲的连接,如果有就分配出去,用完就释放,否则这个请求就必须等待。这就很好的解决了数据库的压力。这就像去餐厅一样,人多的时候我们就得排号等待空闲的位置。

二、dbcp的使用

1.导入jar包。

dbcp依赖3个jar包。

commons-dbcp2-2.1.1.jar

commons-logging-1.1.1.jar

commons-pool2-2.4.2.jar

另外连接数据库还需要单独的jar包,我的数据库是MySql,所以我用的是:mysql-connector-java-5.1.14.jar

2.配置参数

方式1.:通过配置文件配置(dbcp.properties)

 driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost/paper_tag
username=root
password=admin
maxActive=30
maxIdle=10
maxWait=1000
initialSize=5

方式2:通过代码配置

       BasicDataSource bds = new BasicDataSource();
bds.setUrl(url);
bds.setDriverClassName(driverClassName);
bds.setUsername(username);
bds.setPassword(password);
bds.setInitialSize(initialSize);
bds.setMaxActive(maxActive);
bds.setMinIdle(minIdle);
bds.setMaxIdle(maxIdle);
bds.setMaxWait(maxWait);

  

3. 获取连接

  • 下面是获取连接的类DBCPUtil

    private static DataSource ds;
    
        private static final String configFile = "/dbcp.properties";
    
        public DBCPUtil() {
    initDBCP();
    } private void initDBCP() {
    Properties prop = new Properties();
    try {
    prop.load(Object.class.getResourceAsStream(configFile));
    ds = BasicDataSourceFactory.createDataSource(prop);
    } catch (IOException e) {
    e.printStackTrace();
    } catch (Exception e) {
    e.printStackTrace();
    }
    } public Connection getConn() {
    Connection conn = null;
    if(ds != null) {
    try {
    conn = ds.getConnection();
    conn.setAutoCommit(false);
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    return conn;
    } public static void main(String[] args) {
    DBCPUtil db = new DBCPUtil();
    System.out.println(db.getConn());
    }
    }

      

JDBC数据库连接池之dbcp的更多相关文章

  1. JDBC 学习笔记(三)—— 数据源(数据库连接池):DBCP数据源、C3P0 数据源以及自定义数据源技术

    本文目录:        1.应用程序直接获取连接的缺点(图解)        2.使用数据库连接池优化程序性能(图解)        3.可扩展增强某个类方法的功能的三种方式        4.自定 ...

  2. JAVA基础知识之JDBC——JDBC数据库连接池

    JDBC数据库连接池 数据库的连接和关闭是很耗费资源的操作,前面介绍的DriverManager方式获取的数据库连接,一个Connection对象就对应了一个物理数据库连接,每次操作都要打开一个连接, ...

  3. JDBC数据库连接池

    用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长.假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数据库的资源,并且极易造成数据库 ...

  4. Java -- JDBC 数据库连接池

    1. 原理代码示例 public class JdbcPool implements DataSource { private static LinkedList<Connection> ...

  5. JAVA之JDBC数据库连接池总结篇

    JDBC数据库连接池 一.JDBC数据库连接池的必要性 二.数据库连接池技术 三.多种开源的数据库连接池 3.1 C3P0数据库连接池 3.2 DBCP数据库连接池 3.3 Druid(德鲁伊)数据库 ...

  6. JDBC 数据库连接池

    http://www.cnblogs.com/lihuiyy/archive/2012/02/14/2351768.html JDBC 数据库连接池 小结   当对数据库的访问不是很频繁时,可以在每次 ...

  7. JDBC连接池(三)DBCP连接池

    JDBC连接池(三)DBCP连接池 在前面的随笔中提到 了  1.JDBC自定义连接池  2. C3P0连接池 今天将介绍DBCP连接池 第一步要导入jar包   (注意:mysql和mysql 驱动 ...

  8. 【Java123】JDBC数据库连接池建立

    需求场景:多SQL任务多线程并行执行 解决方案:建立JDBC数据库连接池,将线程与连接一对一绑定 https://www.cnblogs.com/panxuejun/p/5920845.html ht ...

  9. Java自学-JDBC 数据库连接池

    数据库连接池 与线程池类似的,数据库也有一个数据库连接池. 不过他们的实现思路是不一样的. 本章节讲解了自定义数据库连接池类:ConnectionPool,虽然不是很完善和健壮,但是足以帮助大家理解C ...

随机推荐

  1. Linux万能快捷键与命令

    tab键:补全命令 \ :命令折行写 Ctrl+C :结束命令 --help :查看命令详细信息 man :类似于help 比help更加详细. sudo :临时以管理员权限执行命令. 还有吗?

  2. Spring Boot入门-快速搭建web项目

    Spring Boot 概述: Spring Boot makes it easy to create stand-alone, production-grade Spring based Appli ...

  3. 对HTML5标签的认识(二)

    ---恢复内容开始--- 这次随笔主要讲一下列表标签.链接标签.和表格标签.图像标签.音频标签.及视频标签的运用及作用. 一.<ul>和<ol> 首先先了解一下<ul&g ...

  4. JavaScript字符串转数字的5种方法及其陷阱

    摘要 :JavaScript 是一个神奇的语言,字符串转数字有 5 种方法,各有各的坑法! String 转换为 Number 有很多种方式,我可以想到的有 5 种! parseInt(num); / ...

  5. finereport报表--动态格间运算 一

    一.运算符:   ! 绝对值 A2[A2:!1] ;   A2 标示从列A纵向第2单元格开始,!1 表示第1个位置的单元格; [A2:!1] 代表索引,表示从A列纵向开始往下,第1个单元格的位置的索引 ...

  6. Vue.js如何在一个页面调用另一个同级页面的方法

    使用场景: 页面分为header.home.footer三部分,需要在home中调用header中的方法,这两个没有相互引入 官方给出方法: 需要在展示页里调用顶部导航栏页里的方法,两者之间没有引用关 ...

  7. 微信小程序(三)页面跳转和图片滑动切换

    跳转部分: 在index2.wxml中,添加跳转函数,如下所示:

  8. Nodejs 操作 Sql Server

    Nodejs 操作 Sql Server Intro 最近项目需要爬取一些数据,数据有加密,前端的js又被混淆了,ajax请求被 hook 了,有些复杂,最后打算使用 puppeteer 来爬取数据. ...

  9. kafka环境搭建

    kafka环境搭建 for mac 对应qq群号:616961231 在之前的文章中, 有学习能力和兴趣爱好的同学,自己动手维护测试环境,丰衣足食是最好的办法,今天我们来讲讲kafka在mac上的安装 ...

  10. Istio入门实战与架构原理——使用Docker Compose搭建Service Mesh

    本文将介绍如何使用Docker Compose搭建Istio.Istio号称支持多种平台(不仅仅Kubernetes).然而,官网上非基于Kubernetes的教程仿佛不是亲儿子,写得非常随便,不仅缺 ...