• Java Web之数据库连接池


    数据库连接池

    一、数据库连接池

    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文件中的信息,获取数据库连接
          }
  • 相关阅读:
    时间日期date/cal
    chown命令
    su命令
    which命令和bin目录
    python基础之文件操作
    python之模块之shutil模块
    python基础之面向对象01
    python基础之面向对象02
    python基础之map/reduce/filter/sorted
    python基础之模块之序列化
  • 原文地址:https://www.cnblogs.com/java-zmj/p/8000690.html
Copyright © 2020-2023  润新知