【简介】

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

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

【原理】

早期:

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

连接池

【代码】

关于数据库连接池有很多种,小编初步使用的是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. android学习1——LinearLayout

    用linearLayout,上面放4个按钮,不作任何设置.xml文件内容如下: <?xml version="1.0" encoding="utf-8"? ...

  2. idea常用设置

    Idea删除当前行的快捷键是Ctrl+y,复制当前行的快捷键是Ctrl+d,和eclipse的习惯不一样.虽然可以一键把idea的快捷键映射成eclipse,但是这样做代价太大,如果这样,idea的官 ...

  3. NSRunLoop原理详解——不再有盲点

    编程最怕的就是有盲点,不确定,而runloop官网对其提及的又很少:那么看完这篇应该使你有底气很多~ RunLoop整体介绍 An event-processing loop, during whic ...

  4. C# 控制台倒计时

    年前经常聊天的大佬群里有人写了窗体的倒计时来计算下班时间和放假时间:) 简直就是在嘲讽我这种没有工作的人,哈哈哈 窗体的倒计时相当的没有技术含量,主要是不够炫酷,不能够体现我们程序员的身份. 那什么才 ...

  5. Android Realm数据库使用指南

    Android Realm数据库使用指南 Realm数据库, 目前有Java, Objective‑C, React Native, Swift, Xamarin的几种实现, 是一套用来取代SQLit ...

  6. php+redis 简易的实现文章发布系统(用户投票系统)

    /** * @data 文章发布 * 文章详情散列表中递增ID,讲文章发布者ID写入投票用户集合中,设置投票时间为一周 * 讲文章内容写入文章散列中,讲文章写入文章评分有序集合和文章发布有序集合中 * ...

  7. bash之重定向

                                                                          标准输入 stdin:代码为0,使用< 或 <& ...

  8. Spring Boot 相关文章目录

    目录 监控 SpringBoot之旅 -- SpringBoot 项目健康检查与监控

  9. wxpython tab切换页面

    最近没事学习下wxpython,发现很少有关于页面切换的demo,这边分享下2中切换的方法.第一种:利用wx.Notebook第二种:利用Sizer布局实现(自己写的),代码没有涉及到什么重构之类的优 ...

  10. MVC支付宝PC网站接口对接

    PC网站支付接口,请参考支付宝官方文档:https://b.alipay.com/signing/productSet.htm?navKey=all 1.需要提供签约账号.商户密钥 2.代码实现: 支 ...