JDBC数据库连接池

数据库的连接和关闭是很耗费资源的操作,前面介绍的DriverManager方式获取的数据库连接,一个Connection对象就对应了一个物理数据库连接,每次操作都要打开一个连接,使用完关闭,需要使用时又重新连接。这将严重影响系统性能。

为了解决这个问题,JDBC2.0引入了数据库连接池。当程序启动时,系统预先创建一批数据库连接对象,形成一个连接池。当程序请求连接时,不需要重新打开物理数据库连接,而是从连接池中获取一个连接,使用完之后,也不是直接关闭物理数据库连接,而是将这个连接对象再次放入连接池。通过使用连接池,大大提高程序性能。

JDBC提供了连接池接口,即javax.sql.DataSource. 一些商用服务器(例如WebLogic, Websphere)提供了具体实现。另外也有一些开源组织提供了实现,例如DBCP和C3P0)

DBCP数据源

这是apache针对JDBC的DataSource接口的开源实现,Tomcat的连接池就是使用它来实现的。

要使用DBCP,需要在工程类库中加入,commons-dbcp.jar和commons-pool.jar两个包。

典型的用法如,

         // 创建连接池连接对象
BasicDataSource ds = new BasicDataSource();
// 连接池的数据库配置信息
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("url=jdbc:mysql://127.0.0.1:3306/dedecms?useUnicode=true&characterEncoding=utf8");
ds.setUsername("root");
ds.setPassword("pass");
// 设置连接池的初始连接数
ds.setInitialSize(5);
// 设置连接池最多可以有多少个活动连接
ds.setMaxActive(20);

实际应用中,建议将连接池对象设置为static,这样在需要使用数据连接的地方,只需要通过ds获取一个连接池中的连接即可,使用完之后再放回连接池,

         //从连接池中拿出一个连接来使用
Connection conn = ds.getConnection();
//并非关闭物理连接,而是把连接对象放回连接池
conn.close();

C3P0连接池

C3P0不仅可以自动清理不再使用的Connection,还可以清理Statement和ResultSet.因此Hibernate就推荐使用它。

要使用C3P0,只需要在工程中引入c3p0-xxxx.jar包即可,典型用法跟DBCP差不多,

         ComboPooledDataSource ds = new ComboPooledDataSource();
// 连接池的数据库配置信息
ds.setDriverClassName("com.mysql.jdbc.Driver");
ds.setUrl("url=jdbc:mysql://127.0.0.1:3306/dedecms?useUnicode=true&characterEncoding=utf8");
ds.setUsername("root");
ds.setPassword("pass");
// 设置连接池的初始连接数
ds.setInitialSize(40);
// 设置最大连接数
ds.setMaxPoolSize(2);
// 设置最小连接数
ds.setMinPoolSize(2);
// 设置连接池缓存Statement的最大数
ds.setMaxStatements(180); Connection conn = ds.getConnection();

JAVA基础知识之JDBC——JDBC数据库连接池的更多相关文章

  1. Java基础知识(多线程和线程池)

    新建状态: 一个新产生的线程从新状态开始了它的生命周期.它保持这个状态直到程序 start 这个线程. 运行状态:当一个新状态的线程被 start 以后,线程就变成可运行状态,一个线程在此状态下被认为 ...

  2. 数据库连接JDBC和数据库连接池C3P0自定义的java封装类

    数据库连接JDBC和数据库连接池C3P0自定义的java封装类 使用以下的包装类都需要自己有JDBC的驱动jar包: 如 mysql-connector-java-5.1.26-bin.jar(5.1 ...

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

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

  4. 沉淀,再出发:Java基础知识汇总

    沉淀,再出发:Java基础知识汇总 一.前言 不管走得多远,基础知识是最重要的,这些知识就是建造一座座高楼大厦的基石和钢筋水泥.对于Java这门包含了编程方方面面的语言,有着太多的基础知识了,从最初的 ...

  5. 使用Java中的动态代理实现数据库连接池

    2002 年 12 月 05 日 作者通过使用JAVA中的动态代理实现数据库连接池,使使用者可以以普通的jdbc连接的使用习惯来使用连接池. 数据库连接池在编写应用服务是经常需要用到的模块,太过频繁的 ...

  6. java基础知识-笔记整理

    1.查看已安装jdk文件路径 CMD输入java -verbose.   2.java学习提升路线 java学习视屏地址: http://www.icoolxue.com/album/show/38 ...

  7. JAVA基础知识之网络编程——-网络基础(Java的http get和post请求,多线程下载)

    本文主要介绍java.net下为网络编程提供的一些基础包,InetAddress代表一个IP协议对象,可以用来获取IP地址,Host name之类的信息.URL和URLConnect可以用来访问web ...

  8. 学习Spring必学的Java基础知识(2)----动态代理

    Spring AOP使用动态代理技术在运行期织入增强的代码,为了揭示Spring AOP底层的工作机理,有必要对涉及到的Java知识进行学习.Spring AOP使用了两种代理机制:一种是基于JDK的 ...

  9. Java基础知识回顾之七 ----- 总结篇

    前言 在之前Java基础知识回顾中,我们回顾了基础数据类型.修饰符和String.三大特性.集合.多线程和IO.本篇文章则对之前学过的知识进行总结.除了简单的复习之外,还会增加一些相应的理解. 基础数 ...

  10. Java基础知识总结(超级经典)

    Java基础知识总结(超级经典) 写代码: 1,明确需求.我要做什么? 2,分析思路.我要怎么做?1,2,3. 3,确定步骤.每一个思路部分用到哪些语句,方法,和对象. 4,代码实现.用具体的java ...

随机推荐

  1. 转: git复制到非空目录

    1. 进入非空目录,假设是 /workdir/proj1 2. git clone --no-checkout https://domain_or_ip/source.git tmp 3. mv tm ...

  2. 视图UIView的大小和位置属性详解

    UIView类中定义了三个属性,分别是frame.bounds与center属性: IKit中的坐标系X轴正方向为水平向右,Y轴正方向为竖直向下. frame属性指的是视图在其父视图坐标系中的位置与尺 ...

  3. oracle正则表达式的用法

    <SPAN style="FONT-SIZE: 18px">Oracle 正则表达式函数-REGEXP_SUBSTR 使用例子 .5个参数 第一个是输入的字符串 第二个 ...

  4. C语言如何开发简单的插件

    linux 通过dlopen来实现: #include "polygon.h" #include <stdlib.h> #include <dlfcn.h> ...

  5. LeetCode Reverse String

    原题链接在这里:https://leetcode.com/problems/reverse-string/ 题目: Write a function that takes a string as in ...

  6. spring-amqp 动态创建queue、exchange、binding

    pom.xml <!-- mq 依赖 --> <dependency> <groupId>com.rabbitmq</groupId> <arti ...

  7. nginx 配置优化(简单)

    配置文件     正常运行的必备配置:         1.user username [groupname]:(推荐nginx)         以那个用户身份运行,以在configure指定的用户 ...

  8. BI好比做菜

    近日,珠海奥威软件宣布成功签约新世界中国地产(华南),成为该公司在商业智能项目上的坚实合作伙伴,共同打造基于以财务应用为主的决策分析平台. 公司简介 新世界中国地产(港股代号:917)为香港上市公司新 ...

  9. pip install 安装python-requests

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-requests

  10. MWeb 1.4 新功能介绍一:引入文件夹到 MWeb 中管理,支持 Octpress、Jekyll 等静态博客拖拽插入图片和实时预览

    之前在 MWeb 中打开非文档库中的 Markdown 文档,如果文档中有引用到本机图片,是没办法在 MWeb 中显示出来和预览的.这是因为 Apple 规定在 Mac App Store(MAS) ...