Java连接器

2024-05-07

Java连接器(精选5篇)

Java连接器 第1篇

随着WEB技术的发展和电子商务时代的到来,人们希望建立能够根据需求生成页面、提供用户交互、提供后台数据库处理等服务的动态网站。在此需求下,以Java技术为核心的JSP技术应运而生。JSP(Java Server Pages)技术是一项纯Java平台技术,是由Sun公司倡导、多家公司共同参与制订的一项动态网页技术标准。JSP将Java作为其脚本语言,在传统的HTML文件中加入Java程序片段和JSP标签,因此JSP也继承了Java语言的各种优点。同时JSP技术将页面设计与商务逻辑分离,区分了Web设计者和Web开发者的角色。在使用JSP技术开发基于数据库的动态Web应用程序中,与数据库的交互已成为一个重要组成部分。与数据库的交互过程中,数据库连接是一种重要的资源,数据库连接的管理性能会影响到整个应用程序的可伸缩性和健壮性。

本文主要对JSP与Web数据库连接的方法进行分析比较,并基于Tomcat用JavaBean构建了一个可重用的数据库连接池。

2 Java中传统的数据库连接技术

Java中连接数据库的技术是的JDBC。JDBC是一套用于执行SQL语句的Java API,它由一组用Java语言编写的类和接口组成,可以为多种关系数据库提供统一访问,其主要功能有建立数据库的连接、向数据库传送SQL语句以及处理数据库返回的操作结果。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。JDBC的体系结构如图1所示。

由图1可以看出,JDBC API屏蔽了不同数据库之间的差异,使程序设计人员有一个标准的、纯Java的数据库程序设计接口,为Java程序访问数据库提供技术支持,而驱动程序管理器(JDBC Driver Manager)则为应用程序加载数据库驱动程序(JDBC Driver)。数据库驱动程序一般由数据库管理系统提供,用于向数据库提交SQL语句。

传统的基于JDBC的数据库访问方式一般有四种:JDBC-ODBC桥接驱动程序、本地API部分Java驱动程序、数据库中间件的纯Java驱动程序、纯Java驱动程序。它们之间的具体关系如图2所示。

2.1 JDBC-ODBC桥接驱动程序

这类驱动将JDBC API作为到另一个数据访问API的映射来实现。这类驱动程序通常依赖本地库,可移植性受到限制。JDBC-ODBC桥是将JDBC操作转换为ODBC操作来实现JDBC操作,ODBC是目前应用最为广泛的数据库访问API,因此通过JDBC-ODBC桥几乎可以连接任何一种数据库,但是需要客户端预装ODBC驱动和配置ODBC数据源,执行效率低,跨平台性差,常用于Windows平台下。

2.2 本地API部分Java驱动程序

这类驱动把对JDBC的调用转换成本地的API调用,通过数据库请求把结果返回给JDBC驱动器,JDBC驱动器再将结果格式转化为JDBC标准形式,并将结果返回给客户端。这种驱动执行效率比第一种有所提高,但仍然需要在客户端加载数据库厂商提供的代码库,不适合基于Internet的应用。

2.3 数据库中间件的纯Java驱动程序

这种驱动程序将JDBC调用翻译成与数据库无关的网络协议,利用中间件将客户端连接到不同类型的数据库系统。使用这种驱动程序不需要在客户端安装其他软件,并且能访问多种数据库。因此,这种驱动程序是与平台无关的,并且与用户访问的数据库无关特别适合在多层结构应用软件体系结构中使用。

2.4 纯Java驱动程序

这类驱动也是完全由Java实现的,不需要加载任何软件或驱动,也不需要任何中介软件,直接把JDBC调用转换为符合相关数据库系统规范的请求,与数据库服务器通信。这种驱动的执行效率是非常高,与平台无关,但与特定的数据库有关。

利用JDBC访问数据库的过程主要有如下四步:1)装载数据库驱动程序。2)访问数据库,执行SQL语句。3)处理数据库返回结果。4)断开数据库连接。

通过研究以上过程,我们就会发现在使用以上方式开发web数据库应用的时候,存在很多问题。首先,每一次客户端的数据库访问请求都要建立一次数据库连接。当众多用户访问web应用时,系统开销非常大。而且在一个基于数据库的web应用系统中,建立数据库连接的操作是整个系统中占用资源最多的操作之一,造成网站速度瓶颈的根源也往往在于此。其次,使用传统的模式,必须去管理每一个连接,确保它们能被正确关闭,如果程序异常而使某些连接未能关闭,最终将导致数据库系统中的内存泄漏,不得不重启数据库。

为此,我们引入了数据库连接池技术来解决以上问题。

3 JDBC数据库连接池技术

数据库连接池最基本的思想就是预先建立一些连接放置于内存对象中以备使用,当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建。使用完毕后只需放回内存即可,而连接的建立、断开都有连接池自身来管理(见图3)。同时还可以通过设置连接池的参数来控制连接池中的连接数、每个连接的最大使用次数,还可以通过其自身的管理机制来监视数据库连接的数量、使用情况等,连接池的使用大大提高了程序效率。连接池的基本属性主要有:连接池中连接数量下限和上限、一个连接的最大使用次数、一个连接的最长空闲时间、同一时间的最大连接数。这些属性定义了连接池与其中的每个连接的有效状态值。连接池的自我管理,实际上就是通过定时对每个连接的状态、连接的数量进行判断而进行相应的操作。

当前国内的数据库连接池的解决方案主要是通过创建封装Driver Manager的包DBConnection,通过该包来实现数据库连接的复用管理。

自JDBC2.0推出以后,一种优于Driver Manager解决方案已经出现,它就是利用JDBC 2.0中的DataSource来实现数据库连接池,以替代1.0中提供的Driver Manager类。DataSource是一个由JDBC驱动程序管理的包含数据库连接信息的数据对象,可以和JNDI(Java Naming Directory Interface)命名服务协同工作,一个数据源对象注册到JNDI名字服务后,应用程序就可以从JNDI服务器上取得该对象,并使用它和数据源建立连接。这样与连接有关的信息就可以在DataSource对象的属性中修改,无需改动使用这个数据源的应用程序,因此增强了应用程序的可移植性、可维护性。因为程序中不在需要像使用Driver Manager那样给出硬性的驱动器名字(往往包含了特定厂商的名字)。

4 用javabean实现连接池的访问

目前的JDBC驱动中基本都包含了DataSource接口的实现,但不少都没有包含基于DataSource的数据库连接池的实现,如SQL Server 2000的JDBC驱动中就没有这种数据库连接池。但在当前的主流应用服务器上都包含了基于DataSource的数据库连接池的实现。如:Weblogic、Websphere、Tomcat等。本文以Tomcat5.5+SQL SERVER 2000为平台来研究如何用JavaBean实现SQL SERVER2000数据库连接池。

首先将SQL SERVER 2000的JDBC的驱动文件(jar)放到Tomcat的common/lib目录下,然后配置Tomcat。

在Tomcat的serverv.xml和content.xml中配置如下示例代码:

编写JavaBean代码,核心javabean(connpool.java)代码如下:

在web应用进行调用,部分示例代码如下:

将连接池部分采用JavaBean的形式进行实现,这样不仅页面易于维护,而且代码也得到重用。JavaBean是经编译过的class文件,源代码也得到保密。而且将用户名和密码封装在class文件内对数据库也起到安全保护作用。

5 结束语

综上所述,通过连接池技术,Java开发人员可以更加高效地连接并操作各种数据库,而不需要单独为管理数据库的连接编写代码,并大大降低了系统开销,提高了数据库访问的速度。笔者在开发实际的web应用中也发现,数据库连接池技术可使开发效率明显得到提高,代码维护代价大大降低,访问效率也得到显著提高,使有限的计算机系统资源为更多的用户提供更加安全可靠的服务。

摘要:介绍了Java中使用的数据库连接技术——JDBC,综述了四种基于JDBC的数据库访问机制,比较各自的优缺点,分析了连接池工作原理及其优势,并且在Tomcat服务器上用JavaBean实现了SQL Server 2000的数据库连接池。

关键词:JSP,JDBC,连接池,JavaBean

参考文献

[1]李肃义,李洋.在JSP中使用JavaBeans连接数据库[J].吉林大学学报(信息科学版),2002,20(3):78-79.

[2]Subrahmanyam Allamaraju等.J2EE编程指南(1.3版)[M].北京:电子工业出版社,2002,231-355.

[3]范新民.基于JSP、JDBC技术动态访问Web数据库的实现方案[J].福建师范大学学报(自然科学版),2002,18(2):33-35.

[4]刘彬.JSP数据库高级教程[M].北京:清华大学出版社,2006.

[5]雨阳隆春,等.深入JSP网络编程[M].北京:清华大学出版社,2001.

Java连接器 第2篇

关键词 Java 数据库 Mysql 数据库连接

一、java.sql类与其方法的理解

首先我们需要引用系统所提供创建语句和管理连接属性,建立与驱动程序的连接,在访问数据出问题时抛出和用于发送准备好的基本SQL语句的方法。由于系统有提供关于sql的方法,我们就可以直接拿来用,只需要去查看API中相应的介绍,API对于开发人员来说就相当于是一部学习的字典,当我们对某个方法和属性不太清楚或者不记得了,就可以来查阅API文档。如下引用的包。

import java.sql.Connection ;

import java.sql.DriverManager ;

import java.sql.SQLException ;

import java.sql.PreparedStatement ;

import java.io.File ;

import java.io.FileOutputStream ;

import java.sql.ResultSet ;

import java.io.InputStream ;

import java.io.InputStream ;

import java.io.OutputStream ;

而io这个包主要是对文件的输出输入流的方法。在这里我们主要用到引用的sql类包,有连接用的有驱动管理器,有对sql语句进行执行和一些数据容器类,这些数据容器可以来接受从数据库中获取的各种形式的数据,比如DataTable类和DataSet等

二、对Mysql数据库进行连接

对不同的数据库,所提供的驱动都是不一样的,对Mysql首先我们需要写一个公共类mysql,定义公共的静态字符串Driver ="org.gjt.mm.mysql.Driver";URL = "jdbc:mysql://localhost:端口号/mldn";User = "用户名";Pass = "密码"。然后就可以方便在主函数中写出连接的说sql语句和方法了。数据库参数一个为空的初始值,初始值的给予是为了给予内存资源,以下就一定要给出初始值。

Connection conn = null;

PreparedStatement pstmt = null;

ResultSet rs = null;

之后只需要写出你所要的sql语句比如字符串sql = "SELECT name,photo FROM ?(表) WHERE id=?";读取数据库地址用户名和密码Class.forName(Driver),连接字符串有三个参数分别是地址、用户名和密码conn=DriverManager.getConnection(URL,User,Pass);再调用它的方面来运行sql语句,conn.prepareStatement(sql)。

三、对数据库中文件进行处理

执行SQl语句进行查询就要调用方面executeQuery() ;如果数据库中一直存在这里写一个判断语句if(rs.next()),获取字符串用getstring();这里可以简单的用System.out.println("用户名:" + name)来检测正确。当然我们还可以写的复杂一点,把文件读取出或者存入数据库中,首先定义一个文件类File f = new File("C:" + File.separator + "名字.gif"),这里是一个图片文件,再定义输出流OutputStream out = null,out = new FileOutputStream(f) ;如果一直有数据,不为空就边读边写出来while((temp=input.read())!=-1),out.write(temp)。最后关闭输入输出close()。并且关闭数据库连接,对数据进行操作后,需要关闭数据库,释放内存空间。

参考文献:

[1]郑瑛.JDBC与数据库应用程序的开发[J].内蒙古民族大学学报(自然科学版), 2004(02).

[2]张作宸.JDBC原理及操纵数据库方法[J].科技信息, 2009(02).

[3]赵丽敏.浅谈JAVA连接数据库[J].科协论坛(下半月) , 2008(01).

[4]陈卫荣.浅谈Java的数据库接口JDBC[J].宁德师专学报(自然科学版), 2002(04).

Java连接器 第3篇

1 Jsp连接Mysql数据库

软件如下:

各种软件版本:

J2sdk:1.5.0;

Tomcat:5.0.28;

Mysql:5.0.27;

Mysql驱动:3.1.14。

首先是配置Tomcat, 很简单, 在环境变量中加入TOMCAT_HOME, 值为Tomcat安装目录, 不多说了。然后是驱动程序包, 随便放在一个位置, 然后在环境变量中的calsspath中加入Jar包的地址, 需要加入的Jar包是:mysql-connector-java-3.1.14-bin.jar, 网上有说还要用到mysql-connector-java-3.1.14-bin-g.jar这个包, 但是我觉得没有必要, 这个根本不需要, 或者说我觉得这是一个误导。把mysql-connector-java-3.1.14-bin.jar放到你的web应用文件夹下。Tomcat的web应用文件夹为webapps, 在这下面可以新建你喜欢的网络应用, 但是WEB-INF这个文件夹和下面的web.xml是必须的, 在WEB-INF下新建一个lib文件夹, 把mysql-connector-java-3.1.14-bin.jar这个文件放在这下面。记住, 不要把mysqlconnector-java-3.1.14-bin-g.jar放过来, 这样就可以连接成功。如果只是编译Java程序的话, 不需要放Jar包这一步, 这是网络应用Jsp编译所必须的。

Java程序:import org.gjt.mm.mysql.*;, ……Class.forName (“org.gjt.mm.mysql.Driver”) , 这就是配置, 这样就可以编译成功, 并且运行, 但是注意抛出异常, 在main函数后面加上代码throws Exception, 否则可能出现错误。

<!--[if!vml]-->

<!--[endif]-->

Jsp页面, 其实这个更简单, 只要把Jar包放对了, 不用import就可以, 直接写<%Class.forName (“org.gjt.mm.mysql.Driver”) .newInstance () ;……%>就可以了, 注意Mysql的URL的格式:jdbc:mysql://localhost:3306/jspstudy?user=root&password=******。

2 Java连接mysql数据库

首先, 是安装数据库软件了, 这里使用的是mysql, 这是因为sqlsever总是出问题, 于是决定改用mysql, 这个挺好的, 而且免费开源。安装方法比较简单, 这里就不写了。然后下载mysql的驱动。这里要详细说一下, SUN公司开发Java语言的时候, 在数据库里只是提供了一个标准的接口, 或者说是规范, 叫做JDBC, 这个东西单独放在那里没有任何作用, 根本无法连接任何的数据库, 只有当你下载相应的数据库驱动程序之后, 才可以用JDBC通过这个驱动程序和数据库通信。sqlsever就有它的专门的驱动程序, 在微软网站上可以下载到。SUN公司自己也开发了数据库驱动程序, 叫做JDBC-ODBC驱动程序, 是通过建立ODBC桥来连接Windows数据库, 但是因为效率低并且有限制, 现在一般都不推荐使用。使用mysql当然要下载它的驱动了, 这个在mysql的官方网站就可以下载到, 新版本是mysql-connector-java-3.1.14.zip, 下载完成后解压缩, 把其中的mysql-connector-java-3.1.14-bin.jar文件和mysql-connector-java-3.1.14-bin-g.jar加到环境变量的classpath中, 因为只有这样里面的类文件才可以使用。

为了能够测试成功, 应该新建一个数据库, 我建的叫jspstudy, 在里面建了一个表叫做addressbook, 添加了一条记录, mysql>insert into addressbook (name, address, phone) values (‘jjx’, 'zhejiangyuyao’, '0574-2222222′) 。

建立一个java文件, 输入如下代码:

import java.sql.*;

import com.mysql.jdbc.*;

public class Database

{

public static void main (String[]args) throws Exception, SQLException

{

Class.forName (“com.mysql.jdbc.Driver”) ;

java.sql.Connection conn=DriverManager.getConnection (“jdbc:mysql://localhost:3306/jspstudy?user=root&password=500158″) ;

java.sql.Statement sql=conn.createStatement () ;

java.sql.ResultSet rs=sql.executeQuery (“select*from addressbook”) ;

while (rs.next () )

{

System.out.println (rs.getString (3) ) ;

}

}

}

编译运行, 如果可以看到输出结果的话, 说明数据库连接成功了。

注:Class.forName (“com.mysql.jdbc.Driver”) ;用来加载驱动程序;jdbc:mysql://localhost:3306/jspstudy?user=root&password=******是数据库URL地址, 前面都是固定的, 3306是端口号, 安装mysql的时候有提示, jspstudy是数据库的名字, user是用户名, password后面填写密码。

摘要:MySQL是一个小型关系型数据库管理系统, 开发者为瑞典MySQLAB公司, MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低, 尤其是开放源码这一特点, 许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。JavaScript是一种基于对象和事件驱动的脚本语言, 通过嵌入或调入HTML语言中实现。Java, 是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器 (支持Java applet) 显示了Java的魅力:跨平台、动态的Web、Internet计算。研究从JavaScript连接Mysql数据库和Java连接Mysql数据库, 为读者提供了方便。

关键词:MySQL,JavaScript,Java

参考文献

[1]廖若雪.JSP高级编程[M].北京:机械工业出版社, 2008.

[2]刘其成等.Java语言基础教程[M].北京:石油大学出版社, 2009.

[3]武延军等.精通JSP编程技术[M].北京:人民邮电出版社, 2006.

[4]李平等.基于JSP技术的Web数据库设计[J].电脑与信息技术, 2009.

[5]老虎工作室.从零开始——JSP动态网页制作基础培训教程[M].北京:人民邮电出版社, 2005.

Java连接器 第4篇

在Java语言中, 要对数据库进行显示、增加、修改、删除等操作, 主要采用JDBC (Java Data Base Connection) 技术。这种技术为开发人员提供了一个标准的API接口, 程序员通过调用纯Java API来编写调用数据库在应用程序。除此之外, 还可以通过编写程序调用JDBC的API, 比较容易的实现对不同数据库的访问。

在计算机语言的学习过程中, 对于大多数人来说数据库的连接和操作是一个难点, 笔者在多年的Java语言实践中积累的连接和操作数据库的方法和技巧与大家一起分享。

1 Java连接My SQL数据库的方法

使用Java语言访问多种不同数据库的时候, 可以通过编写JDBC API调用来实现, 在连接不同数据库在时候, 安装相应的驱动程序即可。例如:要连接My SQL数据库, 就需要安装My SQL数据库的驱动程序“mysql-connector-java.jar”, 这些驱动程序大多椒开源的, 一般可以到官网或互联网上下载。下载后的驱动程序存放的位置有要求, 如果你没有使用开放的开发环境, 那么要将驱动程序存放在JDK安装目录下的lib文件夹中;如果你使用了Eclipse或其它的开发环境, 那么要在这些环境中配置JDK的位置将驱动程序导入到里面。

安装完成数据库在驱动程序之后, 就可以编写程序来实现对数据库的连接。

(1) Class.for Name (“com.mysql.jdbc.Driver”) ;

通过以上两步骤后即可以完成与数据库的连接, 上面代码1中for Name () 方法会抛出Class Not Found Exception, 代码2中get Connection () 方法会抛出SQLException异常, 所以在程序中要进行异常的捕获与处理。

2 数据库连接的技巧

2.1 数据库连接代码的复用

在一个项目开发过程中, 需要经常的对数据库进行操作, 那么我们不能在一个项目中多次写相同的代码, 这样不利于代码的更新与维护, 所以我们可以将连接数据库的代码单独的写在一个Java文件的构造方法中, 这样在需要进行数据库连接时生成该类的对象即可调用到数据库连接的代码。

2.2 数据库连接对象的关闭

在应用程序运行在过程中, 当客户端发起查询或更新请求时, 应用程序就会通过JDBC API新建一个连接, 与数据库进行通信。如果, 应用程序有多个客户端需要频繁对数据进行操作, 那么, 就需要建立相应多个在数据库连接。所以, 编写应用程序在时候在每一个客户端使用数据库完成之后, 一定要释放连接资源, 包括Connection对象、Statement对象和Result Set对象, 否则会因资源耗尽而使应用程序崩溃。因此, 程序员在编写应用程序时, 在处理数据库操作方面必须谨慎, 保证每次的数据操作之后及时释放数据库连接资源, 提高应用程序在稳定性和健壮性。

一个数据库通信连接一般可以支持多达几百个的Statement对象。通常, 在应用程序中, 每个程序在调用都需要构造一个物理连接, 而且每个Statement对象需要单独占用一个物理连接。由于建立物理连接的在过程需要通过网络反复沟通, 比较浪费时间, 所以在连接数据库时, 尽最大可能避免或者减少单个Statement对象独占物理连接在情况。这样的设置对于一般的网站来说还可以, 如果一些访问量比较大的网站, 当连接数超过这个值的时候数据库服务器就会报错, 出现网站瘫痪等现象。所以对数据库操作完成后, 要调用相关对象的close () 方法, 将所创建的数据库连接相关对象关闭, 通常采取“先创建的对象后关闭”的原则。

在使用java编写应用程序时, 通常将将数据库的连接、关闭与异常处理同时写在一个单独的类文件的相关代码。在类的构造方法中编写数据库连接、数据库关闭对象的方法, 此外也可以将其它数据库的操作方法写在此方法中, 例如数据库的查询、修改、插入和删除等。当需要进行数据库操作时, 生成这个类的对象, 就可以进行数据库的连接、关闭以及其它相关操作, 提高代码在利用率。

2.3 数据库连接池的使用

使用JDBC访问网络数据库虽然简单易用, 但是这种方法对于Web开发来说, 存在很多问题。比如文中前面提到的每一次Web请求都要建立一次数据库连接, 即浪费时间又占用内存。而且对于大型的电子商务网站, 同时几百人乃至几千人在访问量, 在进行数据库连接操作时, 要耗费大量在系统资源, 影响网站的访问速度。在标准JDBC API接口中, 并没有提供资源的管理方法, 资源管理必须由应用程序自己负责管理。虽然在JDBC规范中, 强调了资源的关闭、回收及合理运用, 但最稳妥的方式, 还是为应用程序提供有效的管理手段。

对数据库连接资源的管理是很重要的问题。我们可以使用“数据库连接缓冲池”来解决资源的频繁分配与释放所造成的问题。将数据库连接预先放在缓冲池中, 当需要建立数据库连接时, 就从“缓冲池”中取出, 使用后再放回去。我们可以通过设定连接池中的最大连接数来防止太多的连接数量。

3 结语

上面讲述了Java连接My SQL数据库的方法和一些操作技巧实际在进行数据库操作时还有很多可以优化的部分, 除了优化代码部分以外, 还可以优化数据库, 包括数据结构的调整、SQL语句的调整和服务器内存分配的调整等等。另外在Java Web开发中也可以利用Hibernate框架来操作数据库, 它是一个开放源代码的对象关系映射框架, 它对JDBC进行了轻量级的对象封装, 使Java程序员可以随心所欲地使用对象编程思维来操纵数据库。已经得到了广大企业和Java Web开发人员的认可。

参考文献

[1]黄丹.基于JDBC的数据库访问技术[J].软件导刊, 2010 (03) .

[2]聂凯, 曹慢慢.Mysql数据库的访问方法浅析[J].科技资讯, 2010 (09) .

[3]张作宸.JDBC原理及操纵数据库方法[J].科技信息, 2009 (02) .

[4]王丽辉, 王东来.在Web系统中用连接池访问数据库[J].吉林农业科技学院学报, 2010 (01) .

Java连接器 第5篇

在实际开发WEB应用系统中, 如果直接使用JDBC直接访问数据库中的数据, 每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤, 而连接并打开数据库是一件既消耗资源又费时的工作, 如果频繁发生这种数据库操作, 系统的性能必然会急剧下降, 甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法, 在许多应用程序服务器中都提供了这项技术。本文对此进行了深入研究, 并给出了提高数据库访问效率的措施及方法。

1 数据库连接池技术

1.1 概述

数据库连接池技术是将数据库连接作为对象存储在一个Vector对象中, 一旦数据库连接建立后, 不同的数据库访问请求就可以共享这些连接, 这样, 通过复用这些已经建立的数据库连接, 可以极大地减少建立连接通道的数量, 从而达到节省系统资源和时间的目的。

1.2 连接池运行原理

由于将数据库连接作为共享资源来使用, 因此, 如何解决资源频繁分配﹑释放所产生的诸多问题成为最头疼的事情, 采用数据库连接池技术可以很好的解决该问题。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接, 当需要建立数据库连接时, 只需从“缓冲池”中取出一个, 使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量﹑使用情况, 为系统开发﹑测试及性能调整提供依据。其工作原理如图1所示。

由图1看出, 数据库连接池进行的主要操作如下:

(1) 建立数据库连接池对象 (服务器启动) ;

(2) 按照事先指定的参数创建初始数量的数据库连接 (即:空闲连接数) ;

(3) 对于一个数据库访问请求, 直接从连接池中得到一个连接。如果数据库连接池对象中没有空闲的连接, 且连接数没有达到最大 (即:最大活跃连接数) , 创建一个新的数据库连接;

(4) 存取数据库;

(5) 关闭数据库, 释放所有数据库连接 (此时的关闭数据库连接, 并非真正关闭, 而是将其放入空闲队列中。如实际空闲连接数大于初始空闲连接数则释放连接) ;

(6) 释放数据库连接池对象 (服务器停止、维护期间, 释放数据库连接池对象, 并释放所有连接) 。

2 多线程技术对连接池的影响

2.1 多线程程序的实现

本文采用多线程块模型对各个连接进程进行管理。由单个块控制着多个线程因此不需要消息队列, 所有的线程都是相同块的一个部分, 并且可以共享。这样的程序执行速度块, 因为降低了系统的负载, 减少系统空闲的时间。这些应用程序一般比较复杂, 因为必须提供线程同步以保证线程不会并发的请求相同的资源, 因而导致竞争情况的发生。本文给出了多线程管理连接池的三个类ThreadManagement.java、DBConnection Pool.java和DBConnection Manager.java, 并使用synchronized来确保线程的同步。

(1) 实现多线程的类

通过引入系统接口Runnable来实现现场的编写, 将连接池类和连接池管理类实例化后写入run () 中, 然后通过start () 启动该线程。

(2) 连接池类

可以通过newConnection () 来新建一个数据库连接, 经过定时器事件处理函数TimerEvent () , 得到一个连接, 设定等待时间, 如果超时或连接完成, 则通过f r e e C o n n e c t i o n (Connection con) 把连接返还给空闲池, 通过release () 释放占用的系统资源。

(3) 连接池管理类

2.2 连接池使用

连接池在程序开发时通常以Servlet来调用到系统中。Servlet的生命周期是:在开始建立servlet时, 调用其初始化 (init) 方法。之后每个用户请求都导致一个调用前面建立的实例的service方法的线程。最后, 当服务器决定卸载一个servlet时, 它首先调用该servlet的destroy方法。

2.3 连接池的线程管理

连接池是创建和管理一个连接的缓冲池的技术, 这些连接准备好被任何需要它们的线程使用。这种把连接“汇集”起来的技术基于这样的一个事实:对于大多数应用程序, 当它们正在处理通常需要数毫秒完成的事务时, 仅需要能够访问JDBC连接的一个线程。当不处理事务时, 这个连接就会闲置。相反, 连接池允许闲置的连接被其它需要的线程使用。

因此, 对于线程管理来说我们提出了几种提高效率的措施:

(1) 及时地释放连接资源:当一个线程需要用JDBC对一个数据库操作时, 它从池中请求一个连接。当这个线程使用完了这个连接, 将它返回到连接池中, 这样就可以被其它想使用它的线程使用。

(2) 借用共享连接资源:当连接从池中“借出”, 它被请求它的线程专有地使用。从编程的角度来看, 这和用户的线程每当需要一个JDBC连接的时候调用DriverManager.get Connection () 是一样的, 采用连接池技术, 可通过使用新的或已有的连接结束线程。

(3) 减少连接创建时间:由于创建新的JDBC连接仍会招致网络和JDBC驱动的开销。如果将现有连接通过线程控制来“循环”使用, 那么这些花销就可避免。

(4) 受控的资源使用:在一些等待的任务实现上如用户输入、文件读写和网络收发数据等, 在这种情况下我们可以通过释放线程来避免用户应用程序的资源浪费及可能会导致高负载下的异常发生。

(5) 简化事务管理:当两个线程公用一个连接对象, 而且各自都有自己的事务要处理时候, 可以使用每一个事务线程独占一个连接来实现, 虽然这种方法有点浪费连接池资源但是可以大大降低事务管理的复杂性。

3 结束语

连接池线程管理的三个类中, 连接池类是对数据库所有连接的“缓冲池”, 可以完成从开始创建可用连接, 连接使用后返还到连接池, 以及最后断开所有连接并释放连接资源全过程的所有功能。线程类则在此过程中始终进行了全面的控制及管理。

因此, 通过建立一个数据库连接池以及一套连接使用管理策略, 使得一个数据库连接可以得到高效、安全的复用, 避免了数据库连接频繁建立、关闭的开销。另外, 由于对JDBC中的原始连接进行了封装, 从而方便了数据库应用对于连接的使用 (特别是对于事务处理) , 提高了开发效率, 也正是因为这个封装层的存在, 隔离了应用的本身的处理逻辑和具体数据库访问逻辑, 使应用本身的复用成为可能。

摘要:目前, 随着数据库技术的普遍使用, 尤其是复杂的数据库应用已经越来越多了。应用程序和数据库之间频繁的建立、关闭连接, 会极大的减低系统的性能, 因为对于整体系统性能来说, 目前连接使用的低效能将成为瓶颈。本文论述了连接池的工作原理及过程, 并在此过程中提出了使用多线程管理来增效的控制措施。

关键词:数据库连接池,多线程,缓冲池,复用

参考文献

[1]冯博.J2EE1.4程序设计教程[M].北京:清华大学出版社.2005.

[2]邓万宇.基于JDBC的数据库连接池高效管理策略[J].现代电子技术.2006.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【Java连接器】相关文章:

连接器生产管理论文05-08

连接器生产管理论文提纲08-03

连接结构05-07

连接教学05-11

动态连接05-20

连接结构改进05-12

硬件系统连接05-31

连接施工工序05-27

阀门连接范文05-18

连接阀门范文05-19

上一篇:市场制约下一篇:新实验教科书