数据库连接池

一、数据库连接池

1、 数据库连接池就是存放数据库连接(Connection)的集合

2、 我们获取一个数据库连接是一个相对很麻烦的过程,如果我们获取一个数据库连接,使用一次以后就给它关闭了,下一次再去使用的时候就要重新创建一个新的数据库连接。

3、 所以我们提出了一个数据库连接池的概念,数据库连接池放的都是数据库连接(Connection)

    我们在去使用数据库连接时候,不用再去重新创建数据库连接,而是直接从池中获取,

    使用完的数据库连接,也不是直接销毁,而是要放回到连接池。

    4、 数据库连接池的常见的属性:

1)  初始连接数量:数据连接池创建以后,保存数据库连接的数量

2)  最小空闲连接数:数据库连接池最少得未使用的数据库连接的数量

3) 最大空闲连接数:数据库连接池最大闲置连接数,当闲置连接数满了以后,将不会有其他连接进入池

4)  每次增加连接数:当数据库连接都被占用以后,一次性增加的数据库连接的个数

5)  最大连接数:数据库连接池的最大容量,当最大连接数饱和了,则不再创建新的数据库连接

6)  最大等待时间:当数据库连接池饱和以后,等待获取数据库连接的时间

    5、 常见的数据库连接池

      - 所有的数据库连接池都需要实现DataSource,当使用数据库连接池是,我们便不再需要使用DriverManger获取数据库连接,而是使用DataSource。

          - Connection getConnection()

              - 从数据库连接池中获取数据库连接对象

      1.DBCP

           - DBCP是Apache出品的一款数据库连接

- DBCP依赖于commons-pool

  - 使用DBCP需要导入两个jar包:

    commons-dbcp-1.4.jar

    commons-pool-1.5.5.jar

- 当我们通过数据库连接池获取数据库连接以后,我们所获取到数据库连接已经不是我们熟悉的那个Connection

  数据库连接池对Connection对象进行了包装,它修改Connection的close()方法,

  再去调用close()数据库连接将不会真的关闭,而是要放回到数据库连接池中,供其他线程使用。

- 核心类:

BasicDataSourceFactory

      2.C3P0(重点)

- C3P0使用的是XML作为配置文件

  - 使用c3p0需要导入一个jar包:

    c3p0-0.9.1.2.jar

- 导入c3p0的配置文件:

    1.配置文件的名字:c3p0-cofig.xml

    2.配置文件要求放到类路径下(src)

- 核心类:

    ComboPooledDataSource

- 注意:

    DataSource就相当于池子,我们的数据库连接都是从DataSource中获取的,

    如果程序中有多个DataSource的实例,那么我们说你还不如不用数据库连接池。

    所以我们的DataSource在项目中应该只有一个实例。

二、数据库连接池的使用

  1、项目中导入jar包c3p0-0.9.1.2.jar,将c3p0-config.xml配置文件放置到类路径(src)下

  2、使用数据库连接池我们不再使用Connection,而是使用DataSource接口,创建DataSource实体类ComboPooledDataSource的对象dataSource

      private static DataSource dataSource=new ComboPooledDataSource();

  3、getConnection()方法:

    public static Connection getConnection() throws SQLException{
     return dataSource.getConnection(); //执行dataSource.getConnection()方法会读取c3p0-cofig.xml文件中的信息,获取数据库连接
   }

Java Web之数据库连接池的更多相关文章

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

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

  2. Java -- JDBC 学习--数据库连接池

    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开 ...

  3. Java使用独立数据库连接池(DBCP为例)

    目前,绝大多数的软件系统都会使用数据库,而在软件构建起来之后,访问数据库又成为软件系统性能的短板(I/O操作).一般来说一次访问数据库就需要一个数据库连接.而每次创建数据库连接都需要访问,分配空闲资源 ...

  4. Java写的数据库连接池

    原文地址: http://lgscofield.iteye.com/blog/1820521 import java.sql.*; import java.util.Enumeration; impo ...

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

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

  6. Java学习:数据库连接池技术

    本节内容 数据库连接池 Spring JDBC : JDBC Template 数据库连接池 1.概念:其实就是一个容器(集合),存放数据库连接的容器 当系统初始化好后,容器中会申请一些连接对象,当用 ...

  7. 【Java面试】数据库连接池有什么用?它有哪些关键参数?

    一个工作5年的粉丝找到我,他说参加美团面试,遇到一个基础题没回答上来. 这个问题是:"数据库连接池有什么用?以及它有哪些关键参数"? 我说,这个问题都不知道,那你项目里面的连接池配 ...

  8. Java Web c3p0 pool池泄漏优化与日志分析

    问题跟踪: 近期在整合SSH(spring.springmvc.hibernate)项目,提供给第三方服务.每当调用内存池达到上限之后,外界调用服务直接失败,提示[cannot open connec ...

  9. 如何正确的在java web配置数据池

    在tomcat context.xml中配置数据 <Context reloadable="true"> <!-- Default set of monitore ...

随机推荐

  1. RabbitMQ 消息队列 安装及使用

    RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...

  2. Celery-4.1 用户指南: Monitoring and Management Guide (监测和管理指南)

    简介 Celery 提供了监控和探查celery集群的工具. 这篇文档描述了一些工具,以及与监控相关的一些特性,例如事件和广播命令. 工作单元 命令行管理工具(inspect/control) Cel ...

  3. C Primer Plus学习笔记(八)- 函数

    函数简介 函数(function)是完成特定任务的独立程序代码单元 使用函数可以省去编写重复代码的苦差,函数能让程序更加模块化,提高程序代码的可读性,更方便后期修改.完善 #include <s ...

  4. 2016.1.19 DEV Express控件GirdControl使用

    103.GridControl中添加Button RunDesigner,添加一列,设置对应字段FiledName,ColumnEdit选择ButtonEdit,此时默认风格像下拉框,需调整属性: 在 ...

  5. Laravel 在 with 查询中只查询个别字段

    在使用 Laravel 的关联查询中,我们经常使用 with 方法来避免 N+1 查询,但是 with 会将目标关联的所有字段全部查询出来,对于有强迫症的我们来说,当然是不允许的. 这时候我们可以使用 ...

  6. matlab读取excel

    xlsread函数: x = xlsread('d:/min1.csv','B2:B10');    %文件名和路径:所读取的数据范围:

  7. 第5章 使用MUI与H5+构建移动端app

    H5+是JS封装的工具集合,通过H5+我们就可以使用JS的方式去调用到我们手机端上的一些原生的组件. http://dev.dcloud.net.cn/mui/ http://dev.dcloud.n ...

  8. linux磁盘分区fdisk分区和parted分区

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 磁盘分区 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  9. 2018网络预选赛 徐州G 线段树

    线段树,假设求(x1,y1)点的贡献,就找所有比该点出现时间晚,且x坐标大于x1的点中y最大的,贡献就是Y-y1,由于题目条件限制,不可能有x坐标大于(x1,y1)且y坐标大于y1的点,所以贡献肯定为 ...

  10. 8.View类

    Basic Concepts      在Modle/View 结构中,View从Model中提取数据,并显示给用户.View显示数据的方式不一定与Model中数据排列方式相同,也可能与底层数据结构完 ...