【简介】

数据库连接池:程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的链接进行申请,使用,释放。

相比之前的程序连接,减少了数据库的打开关闭次数,从而减少了程序响应的时间。在需要数据库连接的时候直接在数据库连接池中拿取数据连接,进行操作,等使用完成之后将资源放回到数据连接池中,等待下个任务的使用。

【原理】

早期:

数据库连接”是一种稀缺的资源,为了保障网站的正常使用,应该对其进行妥善管理。其实我们查询完数据库后,如果不关闭连接,而是暂时存放起来,当别人使用时,把这个连接给他们使用。就避免了一次建立数据库连接和断开的操作时间消耗。

连接池

【代码】

关于数据库连接池有很多种,小编初步使用的是Apachecommons-dbcp 连接池。小编封装了一个数据库连接池的工具类,在程序中解决数据库连接资源的问题。

/**
* @Title: JDBCUtils.java
* @Package cn.itcast.gjp.tools
* @Description: 获取数据库连接的工具类 实现连接
* @author 贾文静
* @date Apr 5, 2017 4:52:57 PM
* @version V1.0
* Update Logs:
* ****************************************************
* Name:
* Date:
* Description:
******************************************************
*/
package cn.itcast.gjp.tools; import javax.sql.DataSource; import org.apache.commons.dbcp.BasicDataSource; /**
* @ClassName: JDBCUtils
* @Description: 获取数据库连接的工具类 实现连接池,dbcp连接池
* @author 贾文静
* @date Apr 5, 2017 4:52:57 PM
*
*/
public class JDBCUtils
{
// 创建BasicDataSource对象
private static BasicDataSource datasource = new BasicDataSource();
// 静态代码块,实现必要参数设置
static
{
//要使用的JDBC驱动程序的完全限定的Java类名称
datasource.setDriverClassName("com.mysql.jdbc.Driver");
//要传递给我们的JDBC驱动程序以建立连接的连接URL
datasource.setUrl("jdbc:mysql://localhost:3306/gjp");
//要传递给我们的JDBC驱动程序以建立连接的连接用户名
datasource.setUsername("root");
//要传递给我们的JDBC驱动程序以建立连接的连接密码
datasource.setPassword("123");
//设置可以同时分配的活动连接的最大数量
datasource.setMaxActive(10);
//设置池中可重新连接空闲的最大连接数
datasource.setMaxIdle(5);
//设置池中空闲连接的最小数量
datasource.setMinIdle(2);
//设置连接池的初始大小
datasource.setInitialSize(10);
} public static DataSource getDataSource()
{
return datasource;
}
}

其实这个部分可以放到配置文件中,因为其中有数据库的一些内容,为了灵活性,还是建议放到配置文件中。

【问题】

其实使用数据库连接池也会带来一定的问题。

1、并发问题

2、多数据库服务器和多用户

3、事务处理

4、连接池的分配与释放

5、连接池的配置和维护

【总结】

如何利用连接池达到优化程序的目的,减少其所带来的负面影响,还是需要不断提高自己技能来达到。PS:其实连接池也是设计模式中享元模式的一种应用方式。

【Java进阶】——初识数据库连接池的更多相关文章

  1. 初识数据库连接池开源框架Druid

    Druid是阿里巴巴的一个数据库连接池开源框架,准确来说它不仅仅包括数据库连接池这么简单,它还提供强大的监控和扩展功能.本文仅仅是在不采用Spring框架对Druid的窥探,采用目前最新版本druid ...

  2. Java使用独立数据库连接池(DBCP为例)

    目前,绝大多数的软件系统都会使用数据库,而在软件构建起来之后,访问数据库又成为软件系统性能的短板(I/O操作).一般来说一次访问数据库就需要一个数据库连接.而每次创建数据库连接都需要访问,分配空闲资源 ...

  3. Java写的数据库连接池

    原文地址: http://lgscofield.iteye.com/blog/1820521 import java.sql.*; import java.util.Enumeration; impo ...

  4. Java自学-JDBC 数据库连接池

    数据库连接池 与线程池类似的,数据库也有一个数据库连接池. 不过他们的实现思路是不一样的. 本章节讲解了自定义数据库连接池类:ConnectionPool,虽然不是很完善和健壮,但是足以帮助大家理解C ...

  5. JAVA之JDBC数据库连接池总结篇

    JDBC数据库连接池 一.JDBC数据库连接池的必要性 二.数据库连接池技术 三.多种开源的数据库连接池 3.1 C3P0数据库连接池 3.2 DBCP数据库连接池 3.3 Druid(德鲁伊)数据库 ...

  6. Java -- JDBC 学习--数据库连接池

    JDBC数据库连接池的必要性 在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet.beans)中建立数据库连接. 进行sql操作 断开数据库连接. 这种模式开 ...

  7. Java Web之数据库连接池

    数据库连接池 一.数据库连接池 1. 数据库连接池就是存放数据库连接(Connection)的集合 2. 我们获取一个数据库连接是一个相对很麻烦的过程,如果我们获取一个数据库连接,使用一次以后就给它关 ...

  8. Java学习:数据库连接池技术

    本节内容 数据库连接池 Spring JDBC : JDBC Template 数据库连接池 1.概念:其实就是一个容器(集合),存放数据库连接的容器 当系统初始化好后,容器中会申请一些连接对象,当用 ...

  9. 【Java面试】数据库连接池有什么用?它有哪些关键参数?

    一个工作5年的粉丝找到我,他说参加美团面试,遇到一个基础题没回答上来. 这个问题是:"数据库连接池有什么用?以及它有哪些关键参数"? 我说,这个问题都不知道,那你项目里面的连接池配 ...

随机推荐

  1. BZOJ 1898: [Zjoi2004]Swamp 沼泽鳄鱼(矩阵乘法)

    可以发现,如果没有鳄鱼,那么就是裸地一道题,但是可以发现鳄鱼最多每12次重复,那么就少于12的那部分dp,其他的就矩阵乘法就行了 PS:第一次吧矩阵乘法AC了好开心QAQ CODE: #include ...

  2. Angular2 Service实践——实现简单音乐播放服务

    引言: 如果说组件系统(Component)是ng2应用的躯体,那把服务(Service)认为是流通于组件之间并为其带来生机的血液再合适不过了.组件间通信的其中一种优等选择就是使用服务,在ng1里就有 ...

  3. 连载《一个程序猿的生命周期》-《发展篇》 - 7.是什么阻碍了"程序猿"的发展?

    有两件事想记录一下,具有普遍性和代表性."程序猿"加了引号,是泛指一类人,也并非局限于IT行业.       山东子公司的总经理是公司大股东之一,个子不高.有些秃顶.面容显老,但看 ...

  4. 【webpack】-- 自动刷新

    前端需要频繁的修改js和样式,且需要根据浏览器的页面效果不断的做调整:而且往往我们的开发目录和本地发布目录不是同一个,修改之后需要发布一下:另外一点就是并不是所有的效果都可以直接双击页面就能看到,我们 ...

  5. angular : ng-animate : css 原理,详解

    通过几中指令就能完成1.2.xx的animate ·ng-repeat ·ng-show,ng-hide ·ng-if,ng-include,ng-view ·ng-switch ·ng-class ...

  6. 循环神经网络(RNN)模型与前向反向传播算法

    在前面我们讲到了DNN,以及DNN的特例CNN的模型和前向反向传播算法,这些算法都是前向反馈的,模型的输出和模型本身没有关联关系.今天我们就讨论另一类输出和模型间有反馈的神经网络:循环神经网络(Rec ...

  7. 微信小程序入门之构建一个简单TODOS应用

    最近开始了解微信小程序,虽然小程序已经出了很久了,刚出的那段时间很火,看到很多关于小程序的技术文章,不过现在似乎没那么火了,anyway,我们还是可以学习下的. 一.了解微信小程序 1.理念:小程序开 ...

  8. lucene倒排索引缓冲池的细节

    倒排索引要存哪些信息   提到倒排索引,第一感觉是词到文档列表的映射,实际上,倒排索引需要存储的信息不止词和文档列表.为了使用余弦相似度计算搜索词和文档的相似度,需要计算文档中每个词的TF-IDF值, ...

  9. 选择 GCD 还是 NSTimer

    我们常常会延迟某件任务的执行,或者让某件任务周期性的执行.然后也会在某些时候需要取消掉之前延迟执行的任务. 延迟操作的方案一般有三种: 1.NSObject的方法: gcdTimer 2.使用NSTi ...

  10. 2017-03-10 T-sql 语句 高级查询

    T-SQL语句: 创建数据库: 1,点击新建查询,在弹出的页面上进行代码编写.点击可用数据库,编写前确定当前操作的页面是自己想要进行操作的界面. 2,数据库创建语句 Create datebase   ...