【简介】

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

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

【原理】

早期:

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

连接池

【代码】

关于数据库连接池有很多种,小编初步使用的是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. Web前端浏览器兼容问题

    所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...

  2. c++类的构造函数详解

    c++类的构造函数详解 一. 构造函数是干什么的 class Counter{ public:         // 类Counter的构造函数         // 特点:以类名作为函数名,无返回类 ...

  3. github fork, star and watch

    1 git fork git clone原版本的话,只有读权限,是不能直接把修改提交到服务器的. git fork会创建一个副本,然后就可以在这个上面进行开发了,开发了之后可以通过pull reque ...

  4. SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(1)

    我们都知道,不管你是做爬虫也好,采集工具也罢,它们的HTTP/HTTPS模拟访问总是一个基础问题,我估计有很多人和我一样,虽然这样,那样的内置或是第三方类库用了很多,却总是会有一些不如意的问题存在,亦 ...

  5. 用友财务软件U8V10.1虚拟机 及培训视频

    需要学习用友财务软件U8V10.1虚拟机 及培训视频 ,请联系QQ:858-048-581 虚拟机系统为WIN2003+SQLSERVER2008+U8V10.1,虚拟机内存最少需要2G

  6. String字符串截取跟替换经典案例

    分享下今天的一个面试题吧!不算有难度,但是没做出来 题目:将String  str="姓名:武亚伟,年龄:27,地址:西安市": 输出结果为:姓名=武亚伟 年龄=27 地址=西安市 ...

  7. wemall doraemon中Android app商城系统工具集合类,包含各种程序中用到的静态方法

    wemall doraemon中Android app商城系统工具集合类,包含各种程序中用到的静态方法,可用于其他商城或者系统的编程参考 package cn.zzu.edu.wemall.utils ...

  8. 升级后 VTE 类虚拟终端不工作

    故障现象 运行 vte 终端,如 gnome terminal.sakura 等光标不出来.xterm 可以运行. 在 xterm 终端中运行 gnome terminal 出现一下错误: grant ...

  9. 用tp框架来对数据库进行增删改

    先来看添加 使用tp框架,对数据库进行添加操作,都有哪些方法 先在Main控制器中,做个方法 运行一下,注意地址,就要输tianjia了 然后再看一下数据库,有没有添加上数据 添加成功 再来看一下这个 ...

  10. JSP文件转换成为JAVA文件后的结构

    public final class zzz_jsp extends HttpJspBase implements JspSourceDependent{ public void _jspInit() ...