zoukankan      html  css  js  c++  java
  • dbcp数据源连接池

    一.数据源连接池

      我们之前利用jdbc连接数据库,每次都要创建连接对象,销毁连接对象,如果并发访问量比较大,这样肯定比较辣
    浪费数据库的效率,我们可以像之前mybatis中缓存查询到的数据一样,可以把连接对象也建立一个缓存,然后以
    后如果要获取连接就不从数据库中创建了,直接从缓存中去取,这样就节约了连接的创建和销毁的时间,能够提高
    数据库的运行效率。这个“缓存”就叫数据源连接池,数据源连接池一般都是使用第三方的插件来实现,市场上常见的数据源连接池插件有dbcp,c3p0, druid (德鲁伊)连接池等等。但是一般连接池的用法都是相似的,基本上学会一个就会其他的了。
    二.使用dbcp连接池获取数据库的连接对象
    第一步:创建项目,引入jar包
    第二步:创建测试类
    /**
    * 在main方法中使用dbcp获取数据库连接对象
    */
    public class Test01 {
    public static void main(String[] args) throws SQLException {
    //创建连接池对象
    BasicDataSource dataSource = new BasicDataSource();
    //设置数据库的驱动(必选参数)
    dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
    //设置数据库连接url(必选参数)
    dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:orcl");
    //设置数据库连接的用户名(必选参数)
    dataSource.setUsername("scott");
    //设置数据库连接的密码(必选参数)
    dataSource.setPassword("tiger");
    //设置数据源连接池初始化连接数量
    dataSource.setInitialSize(5);
    //设置数据源连接池允许的最大连接数量
    dataSource.setMaxTotal(8);
    //设置数据源连接池最大空闲连接数量
    dataSource.setMaxIdle(6);
    //设置数据源连接池最小空闲连接数量
    dataSource.setMinIdle(3);
    //当数据源连接池连接已被用尽的时候,下一个要链接用户的最大等待时间 单位是毫秒 默认值是-1,是永远等待
    dataSource.setMaxWaitMillis(5000L);
    //获取数据库连接
    Connection conn1 = dataSource.getConnection();
    System.out.println(conn1);
    System.out.println("连接池已经激活的连接数量:"+dataSource.getNumActive());
    System.out.println("连接池空闲连接数量:"+dataSource.getNumIdle());
    }
    }
    三.在spring工厂中创建数据源连接池
    第一步:创建项目,引入jar包
    第二步:创建spring的主配置文件
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--创建dbcp数据源连接池对象-->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
    <!--驱动名-->
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
    <!--url-->
    <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"></property>
    <!--用户名-->
    <property name="username" value="scott"></property>
    <!--密码-->
    <property name="password" value="tiger"></property>
    <!--初始化连接数量-->
    <property name="initialSize" value="5"></property>
    <!--最大连接数量-->
    <property name="maxTotal" value="8"></property>
    <!--最大空闲连接数量-->
    <property name="maxIdle" value="6"></property>
    <!--最小空闲连接数量-->
    <property name="minIdle" value="3"></property>
    <!--连接等待的最大时间 -->
    <property name="maxWaitMillis" value="5000"></property>
    </bean>
    </beans>
    第三步:测试
    public class Test01 {
    public static void main(String[] args)throws Exception {
    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
    BasicDataSource dataSource = (BasicDataSource)context.getBean("dataSource");
    Connection con1 = dataSource.getConnection();
    Connection con2 = dataSource.getConnection();
    System.out.println("激活的连接数量:"+dataSource.getNumActive());
    System.out.println("空闲连接数量:"+dataSource.getNumIdle());
    }
    }
  • 相关阅读:
    ExtJS小技巧
    Oracle 表的行数、表占用空间大小,列的非空行数、列占用空间大小 查询
    NPM 私服
    IDEA 不编译java以外的文件
    SQL 引号中的问号在PrepareStatement 中不被看作是占位符
    Chrome 浏览器自动填表呈现淡黄色解决
    批量删除Maven 仓库未下载成功.lastupdate 的文件
    Oracle 11g 监听很慢,由于监听日志文件太大引起的问题(Windows 下)
    Hibernate 自动更新表出错 建表或添加列,提示标识符无效
    Hibernate 自动更新表出错 More than one table found in namespace
  • 原文地址:https://www.cnblogs.com/duguangming/p/10913986.html
Copyright © 2011-2022 走看看