数据库连接池简介

原创 2005年05月31日 08:35:00

   在传统的两层结构中,客户端程序在启动时打开数据库连接,在退出程序时关闭数据库连接。这样,在整个程序运行中,每个客户端始终占用一个数据库连接,即使在大量没有数据库操作的空闲时间,如用户输入数据时,从而造成数据库连接的使用效率低下。
在三层结构模式中,数据库连接通过中间层的连接池管理。只有当用户真正需要进行数据库操作时,中间层才从连接池申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。

连接池的配置使用
数据库连接池是应用服务器的一项基本功能,我们以Apusic Application Server为例,来说明
JDBC连接池的配置使用。

Apusic
JDBC连接池提供对多种数据库的支持,如Oracle、MS SqlServer、Sybase、Informix、DB2等。

Apusic
JDBC连接池可以通过数据库本身的JDBC Driver连接到数据库,也可以通过JDBC-ODBC桥连接到数据库。下面我们以Oracle为例说明如何配置连接池:

Oracle数据库的
JDBC Driver包文件classes111.zip在/usr/oracle/jdbc/lib(假设oracle的安装目录是/usr/oracle)目录下,首先将classes111.zip加入到系统的CLASSPATH中。然后在apusic/config/apusic.conf(假设安装目录为apusic) 中作如下设置:

<SERVICE
CLASS="com.apusic.jdbc.PoolManager"
NAME="JdbcPool:name=jdbc/sample"
>
<ATTRIBUTE NAME="ExpirationTime" VALUE="300"/>
<ATTRIBUTE NAME="MinCapacity" VALUE="5"/>
<ATTRIBUTE NAME="URL" VALUE="jdbc:oracle:thin:@192.168.19.136:1521:orcl"/>
<ATTRIBUTE NAME="ConnectionProperties" VALUE="user=gtj,password=abc123"/>
<ATTRIBUTE NAME="DriverClassName" VALUE="oracle.jdbc.driver.OracleDriver" />
<ATTRIBUTE NAME="MaxCapacity" VALUE="30"/>
</SERVICE>

ExpirationTime: 超时时间,单位是秒。当一个数据库连接超过expirationTime设定时间不被使用
时,系统会自动关闭这个数据库连接。默认值为300秒
MinCapacity: 最小连接数
URL: 数据库的URL
ConnectionProperties: 连接属性,其中:user用户名,password密码
DriverClassName:
JDBC驱动程序类名
MaxCapacity: 最大连接数
192.168.19.136: oracle所在计算机的IP地址。
 
调用连接池
我们以一个JSP程序为例,说明如何使用连接池。首先通过JNDI得到DataSource,再的得到连接Connection,如下例所示:


<html>

<head>

<title>Jsp sample</title>

</head>

<body>

<p>

<%@ page contentType="text/html;charset=gb2312" %>

<%@ page import="

java.sql.*,

javax.naming.*,

javax.sql.*

"%>

<%

try{

Context ctx = new InitialContext();

DataSource ds = (DataSource)ctx.lookup("jdbc/sample");

Connection con = ds.getConnection();

Statement stmt = con.createStatement();

ResultSet rs = stmt.executeQuery("select ENAME from EMP");

while(rs.next()){

out.println("<p>" + rs.getString(1));

}

rs.close();

stmt.close();

}catch(Exception e){

System.out.println("jsp:" + e.getMessage());

}finally{

try{

con.close();

}catch(Exception e1){}

}

%>

</body>

</html>


数据库连接池简介

创建Connection的过程是非常耗时的,为了保证Conection可以重用。应该将Connection进行池管理 没有连接池用工厂类维护一个链接 /** * 用静态工厂方法管理一个唯一的可重用的...
  • u011417072
  • u011417072
  • 2013年12月22日 11:41
  • 584

JDBC_数据库连接池(一) 介绍

JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:   在主程序(如servlet、beans)中建立数据库连接。 进行sql操作 断开数据库连接。 ...
  • chance2015
  • chance2015
  • 2016年01月03日 19:12
  • 1218

javaweb数据库连接池简介入门

一、应用场景 web应用中,用户每次请求都需要向数据库获得链接,而数据库创建连接通常需要消耗相对较大的资源,创建时间也较长。假设网站一天10万访问量,数据库服务器就需要创建10万次连接,极大的浪费数...
  • chenshufei2
  • chenshufei2
  • 2012年10月17日 21:36
  • 1149

数据库连接池(1)简介

概念:数据库连接池,有和数据库的连接。 //1第一步:加载驱动 Class.forName(driver); //2第二步:打开连接 Connection conn = DriverManag...
  • lzbhnr
  • lzbhnr
  • 2017年06月24日 11:37
  • 61

Java数据库连接池 学习笔记

背景对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就新创建一个连接,用完后就关闭它,这样做也不会带来什么明显的性能上的开销。但是对于一个复杂的数据库应用,...
  • ToBeTheEnder
  • ToBeTheEnder
  • 2016年10月17日 21:21
  • 3822

各种数据库连接池对比

主要功能对比 Druid BoneCP DBCP C3P0 Proxool JBoss Tomcat-Jdbc LRU 是 否 是 否 是 是 ? PSCache 是 是 是 是 否 否 是 PSCa...
  • Bleachswh
  • Bleachswh
  • 2016年11月15日 20:12
  • 867

数据库连接池原理详解与自定义连接池实现

实现原理数据库连接池在初始化时将创建一定数量的数据库连接放到连接池中,这些数据库连接的数量是由最小数据库连接数制约。无论这些数据库连接是否被使用,连接池都将一直保证至少拥有这么多的连接数量。连接池的最...
  • fuyuwei2015
  • fuyuwei2015
  • 2017年05月17日 18:18
  • 1483

数据库连接池概念

该文章来自于阿里巴巴技术协会(ATA)精选文章。 这次我们来聊聊数据库的连接, 因为我觉得这是蛮有内容且蛮重要的一部分内容。首先会从单个的连接池讲起,重点考察下单连接池和数据库的交互情况, 然后...
  • haonan108
  • haonan108
  • 2016年08月23日 09:49
  • 702

阿里数据库连接池druid详解

DRUID连接池的实用 配置详解 DRUID介绍     DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,...
  • sdx1237
  • sdx1237
  • 2017年04月20日 21:26
  • 4282

一个简单的java数据库连接池

import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.Driver; impor...
  • woshiwu
  • woshiwu
  • 2012年02月27日 14:13
  • 2094
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据库连接池简介
举报原因:
原因补充:

(最多只允许输入30个字)