DBCP(连接池):

  解决对数据库建立以及关闭连接时消耗大量资源的解决方案。
  程序创建和关闭对数据库连接时会消耗大量的资源,连接池技术帮我们
  在程序运行的开始时就预先创建大量的连接,这些连接组成一个池,每次
  程序请求访问数据库的时候,无需创建连接,而是从池中去除已有的连接。
  使用完后不需关闭而是归还连接。
 释放与使用原则:
  应用程序启动,创建初始化一定数目的连接
  当申请时无连接可用,或者达到指定的最小连接数,按增量参数值创建连接。
  为确保连接池最小的连接数策略:
   1.动态检查:定时检查连接池,一旦发现数量小于最小连接数,则补充相应新的连接,保证连接池正常运作
   2.静态检查:空闲连接不足时,系统才检查是否达到最小连接数。
 DBCP的创建步骤:

  (1)先创建一个properties文件(如:db.properties),里面存放连接池的参数。(此步骤方便对DBCP参数的修改)

  (2)properties文件的格式可参考如下:

jdbc.driver=oracle.jdbc.OracleDriver  //连接数据库(oracle)的端口
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl //连接数据库的路径
jdbc.user=system                    //数据库的用户名
jdbc.password=123456                // 数据库的连接口令

dbcp.nitialSize=10
dbcp.maxIdle=20
dbcp.minIdle=5
dbcp.maxActive=50
dbcp.maxWait=1000

  (3)java使用连接池连接数据库的代码:

public class DBCP {

    private static BasicDataSource dataSource=null; //创建一个连接池对象
    public static void init(){//加载方法
        Properties p = new Properties(); //创建properties对象来操作properties文件
        try {//加载配置文件
            p.load(connetionSource.class.getClassLoader().getResourceAsStream("db.properties")); //映射到properties文件的位置
        } catch (IOException e) {
            e.printStackTrace();
        }

        try{
        //读取properties文件,获取属性字段
         String driver =p.getProperty("jdbc.driver");
         String url =p.getProperty("jdbc.url");
         String username =p.getProperty("jdbc.user");
         String password =p.getProperty("jdbc.password");

         // 初始化dataSource
         dataSource= new BasicDataSource();
         dataSource.setDriverClassName(driver);
         dataSource.setUrl(url);
         dataSource.setUsername(username);
         dataSource.setPassword(password);

         /**
          * 连接池参数
          *  初始连接数     initialSize
          *  最大连接数     maxActive
          *  最小连接数     minActive
          *  每次增加的连接数
          *  超时时间        maxWait
          *  最大空闲连接     maxIdle
          *  最小的空闲连接  minIdle
          */

         String initialSize =p.getProperty("dbcp.initialSize");
         String minIdle=p.getProperty("dbcp.minIdle");
         String maxIdle=p.getProperty("dbcp.maxIdle");
         String maxActive= p.getProperty("dbcp.maxActive");
         String maxWait =p.getProperty("dbcp.maxWait");

         //初始化连接数:
         if(initialSize!=null){
         dataSource.setInitialSize(Integer.parseInt(initialSize));
         }
         //最大空闲连接
         if(maxIdle!=null){
         dataSource.setMaxIdle(Integer.parseInt(maxIdle));
         }
         //最小空闲连接·
         if(minIdle!=null){
         dataSource.setMinIdle(Integer.parseInt(minIdle));
         }
         //最大连接数
         if(maxActive!=null){
             dataSource.setMaxActive(Integer.parseInt(maxActive));
         }
         //超时回收连接
         if(maxWait!=null){
             dataSource.setMaxWait(Integer.parseInt(maxWait));
         }

        }catch(Exception e){
            System.out.println("创建连接池失败,请检查配置");
        }

    }
    public static synchronized Connection getConnection() throws SQLException{

        if(dataSource ==null){//没有就连接池则加载一个连接池
            init();
        }
        Connection conn=null;
        if(dataSource !=null){
            conn=dataSource.getConnection();
        }

        return conn;
                }

}
     

(4)新开一个类,创建链接

  

    

连接数据库方法2-DBCP的更多相关文章

  1. MATLAB通过ODBC连接数据库方法

    MATLAB通过ODBC连接数据库方法 1.首先创建数据库,我在这里用到的是MySQL 8.0 2.建立ODBC数据源,参考链接: https://www.cnblogs.com/benpao1314 ...

  2. 连接数据库 JDBC、DBCP、JNDI

    一.JDBC package com.direct.util; import java.sql.Connection; import java.sql.DriverManager; import ja ...

  3. JDBC连接数据库方法的封装,以及查询数据方法的封装

    (在上一篇文章中,我们详细的介绍了连接数据库的方法,以及eclipse操作数据库信息的相关方法,在这里我们将主要讲封装.) 主要内容: 一般的连接数据库测试 把连接数据库的方法封装成一个类和测试 一个 ...

  4. python:封装连接数据库方法

    config.py # 数据库测试环境 name = '***' password = '******' host_port_sid = '10.**.*.**:1521/bidbuat' Oracl ...

  5. Django ORM 以连接池方式连接底层连接数据库方法

    django原生支持是不支持 以连接池方式连接数据库的 概述 在使用 Django 进行 Web 开发时, 我们避免不了与数据库打交道. 当并发量低的时候, 不会有任何问题. 但一旦并发量达到一定数量 ...

  6. 连接数据库方法---DAO,RDO,OLE,ADO

    2012-12-14 09:40 (分类:计算机程序) DAO (Data Access Objects) 提供了一种通过程序代码创建和操纵数据库的机制.最大特点是对MICROSOFT JET(Jet ...

  7. Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...

  8. 数据库连接池(DBCP:为数据统一建立一个缓冲池,现在企业开发使用)

    数据库连接池:(里面放了许多连接数据的链接,负责分配,管理,释放数据库连接,可重复使用连接,而不新建  )为数据统一连接建立一个缓冲池,放好了一定数据库连接,使用时在缓冲池里面拿,用完之后再还给缓冲池 ...

  9. DAO模型设计实现数据的 增,删,改,查方法

    连接数据库方法,及反射获取数据,以前的方法相同,测试类 是在DAO模型下建立的 ------------------------------------------------------------ ...

随机推荐

  1. Solr查询和过滤器执行顺序剖析

    一.简介 Solr的搜索主要由两个操作组成:找到与请求参数相匹配的文档:对这些文档进行排序,返回最相关的匹配文档.默认情况下,文档根据相关度进行排序.这意味着,找到匹配的文档集之后,需要另一个操作来计 ...

  2. PHP mb_substr mbstring 函数

    定义和用法 mb_substr - 获取部分字符串 版本支持 PHP4 PHP5 PHP7 支持 支持 支持 5.4.8 length 传入 NULL,则从 start 提取到字符串的结尾处. 在之前 ...

  3. flutter之VSCode下Flutter常用终端命令行

    https://www.cnblogs.com/lxlx1798/p/11049922.html 梁飞宇 [Flutter学习]之VSCode下Flutter常用终端命令行 Flutter 常用命令行 ...

  4. HTML文本域(文本框)禁止修改写入数据方法

    html文本域有时需要禁止修改内容,方法如下: 加入readonly=""或readonly="readonly" 如下:<input name=&quo ...

  5. Golang的运算符-逻辑运算符

    Golang的运算符-逻辑运算符 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.逻辑运算符概述 !: 非运算符,表示NOT(有种取反的意思),如"!ture" ...

  6. eclipse 安装spring tools suite插件

    之前使用idea进行springboot项目的开发学习,但是由于idea是收费的,总是用着用着说验证码到期之类的,总之还是很不爽,于是就想重新采用eclipse开发springboot项目,为了方便s ...

  7. 18.swoole学习笔记--案例

    <?php //创建webSocket服务器 $ws=); //open $ws->on('open',function($ws,$request){ echo "新用户 $re ...

  8. 一百一十一、SAP的OO-ALV之五,显示ALV表格

    一.在屏幕里面有2部分,(PROCESS BEFORE OUTPUT 用于显示, PROCESS AFTER INPUT用于数据处理).我们创建的display_alv函数, 二.display_al ...

  9. React 学习笔记(1) 基础语法和生命周期

    参看:视频地址 简单搭建一个react-cli: 2. React.createElement() 将object转化为 React语法 import React from 'react' impor ...

  10. 第二阶段scrum-9

    1.整个团队的任务量: 2.任务看板: 会议照片: 产品状态: 消息收发在制作