数据库连接池

一、数据库连接池

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. 使用like查询text类型字段

    使用like查询text类型字段 public bool Exists(GetReadType GRT, ClientMessageGetRead TypeID, string MessageID, ...

  2. 利用XmlDocument操作XML文件

    利用XmlDocument可以方便的操作XML文件. .操作XML文件基本方法 ()添加对System.Xml的引用,并使用using语句添加引用: ()假设要读取的XML文件如下: <?xml ...

  3. ssh框架整合其他方式(没有hibernate核心配置文件)

  4. windows 获取本机(全部)IPv4、IPv6、MAC地址方法 (C/C++)

    windows下获取IP地址的两种方法: 一种可以获取IPv4和IPv6,但是需要WSAStartup: 一种只能取到IPv4,但是不需要WSAStartup: 如下: 方法一:(可以获取IPv4和I ...

  5. LINUX oracle dbca无法启动

    LINUX操作系统中执行DBCA无法启动 方法:执行以下命令后再执行DBCA xhost +

  6. java中用正则表达式判断中文字符串中是否含有英文或者数字

    public static boolean includingNUM(String str)throws  Exception{ Pattern p  = Pattern.compile(" ...

  7. day17-jdbc 4.DriverManager详解

    我们找的不是J2EE的API,因为JDBC不在web程序用也可以,纯java也能玩.所以jdbc的api在java se那里,或者说是在jdk那里. DriverManger它底层有一个集合是一个Ve ...

  8. apache重写规则详解

    RewriteEngine on 为重写引擎开关,如果设为off,则任何重写规则定义将不被应用,该开关的另一好处就是如果为了临时拿掉重写规则,则改为off再重启动Apache即可,不必将下面一条条的重 ...

  9. 框架之 hibernate之关联关系映射

    案例:完成CRM的联系人的保存操作 需求分析 1. 因为客户和联系人是一对多的关系,在有客户的情况下,完成联系人的添加保存操作 技术分析之Hibernate的关联关系映射之一对多映射(重点) 1. J ...

  10. python http认证

    Requests 库有一个auth 模块专门用来处理HTTP 认证: import requestsfrom requests.auth import AuthBasefrom requests.au ...