一.数据源连接池

  我们之前利用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());
}
}

dbcp数据源连接池的更多相关文章

  1. DBCP数据源连接池实现原理分析

    前些天在调试公司系统的时候发现这样的一个问题:mysql数据库服务停止一段时间后再次重启后吗,tomcat服务无法请求数据库服务,调试了半天对这个问题进行定位解决,期间也搞了很多有关mysql数据库的 ...

  2. JavaWeb之数据源连接池(1)---DBCP

    何为数据源呢?也就是数据的来源.我在前面的一篇文章<JavaWeb之原生数据库连接>中,采用了mysql数据库,数据来源于mysql,那么mysql就是一种数据源.在实际工作中,除了mys ...

  3. JDBC数据源连接池(3)---Tomcat集成DBCP

    此文续<JDBC数据源连接池(2)---C3P0>. Apache Tomcat作为一款JavaWeb服务器,内置了DBCP数据源连接池.在使用中,只要进行相应配置即可. 首先,确保Web ...

  4. JDBC数据源连接池(1)---DBCP

    何为数据源呢?也就是数据的来源.我在前面的一篇文章<JDBC原生数据库连接>中,采用了mysql数据库,数据来源于mysql,那么mysql就是一种数据源.在实际工作中,除了mysql,往 ...

  5. JavaWeb之数据源连接池(3)---Tomcat

    此文续 <JavaWeb之数据源连接池(2)---C3P0>. Apache Tomcat作为一款JavaWeb服务器,内置了DBCP数据源连接池.在使用中,只要进行相应配置即可. 首先, ...

  6. JavaWeb之数据源连接池(4)---自定义数据源连接池

    [续上文<JavaWeb之数据源连接池(3)---Tomcat>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究其原 ...

  7. JavaWeb之数据源连接池(2)---C3P0

    我们接着<JavaWeb之数据源连接池(1)---DBCP>继续介绍数据源连接池. 首先,在Web项目的WebContent--->WEB-INF--->lib文件夹中添加C3 ...

  8. JDBC数据源连接池(4)---自定义数据源连接池

    [续上文<JDBC数据源连接池(3)---Tomcat集成DBCP>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究 ...

  9. JDBC数据源连接池(2)---C3P0

    我们接着<JDBC数据源连接池(1)---DBCP>继续介绍数据源连接池. 首先,在Web项目的WebContent--->WEB-INF--->lib文件夹中添加C3P0的j ...

随机推荐

  1. 007-函数-C语言笔记

    007-函数-C语言笔记 学习目标 1.[了解]函数的分类 2.[掌握]函数的声明定义和调用 3.[掌握]函数的形参和实参 4.[掌握]带返回值的函数 5.[掌握]全局变量和局部变量 6.[了解]注释 ...

  2. [总结]Floyd算法及其应用

    目录 一.Floyd算法 二.Floyd算法的应用 1. 传递闭包 例1:P2881 [USACO07MAR]排名的牛Ranking the Cows 例2:P2419 [USACO08JAN]牛大赛 ...

  3. E. 蚂蚁和斐波那契

    单点时限: 1.0 sec 内存限制: 512 MB 聪明的小蚂蚁最近学习了斐波那契数列,但是它想到了一个问题:从L到R之间斐波那契数列和的奇偶是什么呢?其中Fib[1]=1,Fib[2]=1 . 输 ...

  4. 【LeetCode】57. Insert Interval [Interval 系列]

    LeetCode中,有很多关于一组interval的问题.大体可分为两类: 1.查看是否有区间重叠: 2.合并重叠区间;  3.插入新的区间: 4. 基于interval的其他问题 [ 做题通用的关键 ...

  5. 痞子衡嵌入式:简析i.MXRT1170 Cortex-M4 L-MEM ECC功能特点、开启步骤、性能影响

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是恩智浦i.MXRT1170上Cortex-M4内核的L-MEM ECC功能. 本篇是 <简析i.MXRT1170 Cortex-M ...

  6. ASP.NET Core技术研究-全面认识Web服务器Kestrel

    因为IIS不支持跨平台的原因,我们在升级到ASP.NET Core后,会接触到一个新的Web服务器Kestrel.相信大家刚接触这个Kestrel时,会有各种各样的疑问. 今天我们全面认识一下ASP. ...

  7. golang依赖管理

    目录 使用GOPATH管理依赖 临时GOPATH 依赖查找路径 使用GOVENDER管理依赖 使用GO111MODULE管理依赖 Usage 常用命令列表 不常用命令 使用示例 开启GO111MODU ...

  8. python 工具链 虚拟环境和包管理工具 pipenv

    Pipenv is a tool that aims to bring the best of all packaging worlds (bundler, composer, npm, cargo, ...

  9. Java中集合的嵌套

    集合的嵌套遍历 获取10个1-20之间的随机数,要求不能重复 键盘录入多个数据,以0结束,要求在控制台输出这多个数据的最大值. public static void main(String[] arg ...

  10. [Abp vNext 入坑分享] - 前言

    一·背景 Abp vnext是 ABP 框架作者所发起一个完全基于 ASP .NET Core框架,截至2020年4月份已经升级到2.5.0版本,根据经验2.0版本以后可以放心的使用在生产环境.类似a ...