数据库连接池

一、数据库连接池

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. idea debug的时候 启动起来超级慢

  2. 使用jmx4perl和j4psh接管Jolokia

    在ActiveMQ的API中,内置了Jolokia . 可以使用jmx4perl来安装: $ perl -MCPAN -e shell Terminal does not support AddHis ...

  3. DDD学习笔录——领域驱动设计的常见误区(即错误的理解)

    可以将DDD看成一种开发思想体系:它促成了一种新的以领域为中心的思维方式. 它是一种学习过程,而非最终目标,这就是DDD的最大优势. 任何团队都可以编写一个软件来满足一组用例的需求,但那些将时间和精力 ...

  4. Git实用技巧

    1.关于版本控制系统 (1)本地版本控制系统 (2)集中化的版本控制系统 (3)分布式版本控制系统 2.Git的三种状态 对于任何一个文件,在 Git 内都只有三种状态: 已提交(committed) ...

  5. hibernate学习笔记(1)基础配置与jar包

    下载hibernate基础jar包,并解压hibernate-core-4.2.4.final 在myeclipse中添加hibernate的dtd支持: location为D:\学习\imooc-h ...

  6. struts2学习笔记(1)配置与基本操作

    主要作用:将请求与页面区分开 配 置: 下载struts 2.0,在安装路径D:\项目学习\三大框架视屏\struts-2.3.24-all\struts-2.3.24\apps 中解压struts2 ...

  7. Android排错: has leaked window com.android.internal.policy.impl.PhoneWindow$ that was originally added here

    异常场景: 经常在应用中需要处理一些耗时的工作,诸如读取大文件.访问网络资源等.为了避免因程序假死而带来的糟糕用户体验,通常我们可以通过线程+Handler或者Android提供的AsyncTask来 ...

  8. Python单例模式剖析

    在聊这之前我们首先要明确的是,单例模式在实际中的意义以及在python中具有实现的价值? 当前,相信有很多人支持单例模式,也有不少人反对,尤其是在python中,目前依旧具有很大的争议性.我们要在评论 ...

  9. PHP处理密码的几种方式

    在 PHP中,经常会对用户身份进行认证.本文意在讨论对密码的处理,也就是对密码的加密处理. 1.MD5 相信很多PHP开发者在最先接触PHP的时候,处理密码的首选加密函数可能就是MD5了,我当时就是这 ...

  10. [bzoj2460] [BeiJing2011]元素(线性基+贪心)

    题目大意: 有一些矿石,每个矿石有一个a和一个b值,要求选出一些矿石,b的和最大且不存在某个矿石子集它们的a的异或和为0. 解题关键:对魔力进行由大到小排序,依次加入线性基,统计即可. #includ ...