zoukankan      html  css  js  c++  java
  • 数据库连接池简介,使用

    一、 数据库连接池
    1、 数据库连接池就是存放数据库连接(Connection)的集合
           我们获取一个数据库连接是一个相对很麻烦的过程,如果我们获取一个数据库连接,

           使用一次以后就给它关闭了下一次再去使用的时候就要重新创建一个新的数据库连接。

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

           我们在去使用数据库连接时候,不用再去重新创建数据库连接,而是直接从池中获取,
           使用完的数据库连接,也不是直接销毁,而是要放回到连接池

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

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

            2)最小空闲连接数:数据库连接池最少得未使用的数据库连接的数量
            3)最大空闲连接数:数据库连接池最大闲置连接数,当闲置连接数满了以后,将不会有其他连接进入池
            4) 每次增加连接数:当数据库连接都被占用以后,一次性增加的数据库连接的个数

            5)最大连接数:数据库连接池的最大容量,当最大连接数饱和了,则不再创建新的数据库连接
            6)最大等待时间:当数据库连接池饱和以后,等待获取数据库连接的时间

    3、 常见的数据库连接池
             所有的数据库连接池都需要实现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.创建jdbc.properites

    2.配置xml

    <bean id="ComboPooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
          <property name="user" value="${jdbc.username}"></property>
          <property name="password" value="${jdbc.password}"></property>
          <property name="driverClass" value="${jdbc.driver}"></property>
          <property name="jdbcUrl" value="${jdbc.url}"></property>
    </bean>

    3.建立连接

    @Test
    public void testjdbc() throws SQLException {
          ApplicationContext ioc=new ClassPathXmlApplicationContext("applictionContext.xml");
          DataSource bean2 = ioc.getBean(DataSource.class);
          Connection connection = bean2.getConnection();
          String sql = "select * from student";
          PreparedStatement prepareStatement = connection.prepareStatement(sql);
          ResultSet rs = prepareStatement.executeQuery();


         while(rs.next()){
                String id=rs.getString(1);
                String name=rs.getString(2);
                String school=rs.getString(3);
                String score=rs.getString(4);


                System.out.println("id="+id+" name="+name+" school="+school+" score="+score);
         }
    }

     

  • 相关阅读:
    51nod 1050 循环数组最大子段和
    51nod 1183 编辑距离
    百度之星初赛一 补题
    jquery click嵌套 事件重复注册 多次执行的问题
    Shell变量赋值语句不能有空格
    Linux得到某个文件夹内文件的个数
    Ubuntu14.04下sogou输入法的输入框只显示英文不显示中文的问题
    Eclipse中mybatis的xml文件没有提示,出现the file cannot be validated as the XML definition.....
    整理一下postgresql的扩展功能postgis和pgrouting的使用
    Windows应用程序未响应
  • 原文地址:https://www.cnblogs.com/zhaosong-0102/p/7450172.html
Copyright © 2011-2022 走看看