摘 要:本文主要对JSP与Web数据库连接的方法进行分析比较,并基于Tomcat用JavaBean构建了一个可重用的数据库连接池。同时也讨论了在多种异构数据库下,如何进行多数据库的访问,并分析了使用Java技术下的各种方法进行多种异构数据库下的数据交换。
关键词:数据库;JDBC;连接池
1 引言
随着Web技术的发展和电子商务时代的到来,人们希望建立能够根据需求生成页面、提供用户交互、提供后台数据库处理等服务的动态网站。在此需求下,以Java技术为核心的JSP技术应运而生。在使用JSP技术开发基于数据库的动态Web应用程序中,与数据库的交互已成为一个重要组成部分。与数据库的交互过程中,数据库连接是一种重要的资源,数据库连接的管理性能会影响到整个应用程序的可伸缩性和健壮性。现在的各种数据库应用,由于技术、历史等因素,往往在一个大的部门中并存有多个应用系统。这些应用系统可能分散于不同的网络节点、基于不同的操作平台、使用不同的数据库管理系统,且各子系统封闭运行,自成一体,这样给不同部门的信息资源共享带来困难。如何在不改变原来系统的内部信息的前提下,完成不同数据库系统间的数据访问和交换是值得研究的问题。
近年来,随着Internet/Intranet建网技术的飞速发展和在世界范围内的迅速普及,计算机应用程序已从传统的桌面应用转到Web应用。基于B/S架构的三层开发模式逐渐取代C/S架构的开发模式,成为开发企业级应用和电子商务普遍采用的技术。在Web应用开发的早期,主要使用的技术是CGI、ASP、PHP等。之后,Sun公司推出了基于Java语言的servlet+Jsp+JavaBean技术。相比传统的开发技术,它具有跨平台、安全、有效、可移植等特性,这使其更便于使用和开发。
2 Java中传统的数据库连接技术
在Java语言中,JDBC是应用程序与数据库沟通的桥梁,JDBC是一种“开放”的方案,它为数据库应用开发人员与数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,分别是面向开发人员的API和面向底层的JDBC驱动程序API,底层主要通过直接的JDBC驱动和JDBC-ODBC桥驱动实现与数据库的连接。一般来说,JDBC提供了一种基准.据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。
传统的基于JDBC的数据库访问方式一般有四种:JDBC—ODBC桥接驱动程序、本地
API部分Java驱动程序、数据库中间件的纯Java驱动程序、纯Java驱动程序。
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标准形式,并将结果返回给客户端。这种驱动执行效率比第一种有所提高,但仍然需要在客户端加载数据库厂商提供的代码库。
2.3 数据库中间件的纯Java驱动程序
这种驱动程序将JDBC调用翻译成与数据库无关的网络协议,利用中间件将客户端连接到不同类型的数据库系统。使用这种驱动程序不需要在客户端安装其他软件,并且能访问多种数据库。因此,这种驱动程序是与平台无关的,并且与用户访问的数据库无关。特别适合在多层结构应用软件体系结构中使用。
2.4 纯Java驱动程序
这类驱动也是完全由Java实现的,不需要加载任何软件或驱动,也不需要任何中介软件,直接把JDBC调用转换为符合相关数据库系统规范的请求,与数据库服务器通信。这种驱动的执行效率是非常高,与平台无关,但与特定的数据库有关。
利用JDBC访问数据库的过程主要有以下四步:①装载数据库驱动程序。②访问数据库,执行SQL语句。③处理数据库返回结果。④断开数据库连接。
JDBC作为一种数据库访问技术,具有简单易用的优点。但使用这种模式进行Web应用程序开发,存在很多问题:首先,每一次Web请求都要建立一次数据库连接。建立连接是一个费时的活动,每次都得花费0.05s~1s的时间,而且系统还要分配内存资源。这个时间对于一次或几次数据库操作,或许感觉不出系统有多大的开销。可是对于现在的Web应用,尤其是大型电子商务网站,同时有几百人甚至几千人在线是很正常的事。在这种情况下,频繁的进行数据库连接操作势必占用很多的系统资源,网站的响应速度必定下降,严重的甚至会造成服务器的崩溃。其次,对于每一次数据库连接,使用完后都得断开。否则,如果程序出现异常而未能关闭,将会导致数据库系统中的内存泄漏,最终将不得不重启数据库。还有,这种开发不能控制被创建的连接对象数,系统资源会被毫无顾及的分配出去,如连接过多,也可能导致内存泄漏,服务器崩溃。
3 数据库连接池技术
3.1 数据库连接池的基本原理
为解决上述问题,可以采用数据库连接池技术。数据库连接池的基本思想就是为数据库连接建立一个“缓冲池”。预先在缓冲池中放入一定数量的连接,当需要建立数据库连接时,只需从“缓冲池”中取出一个,使用完毕之后再放回去。我们可以通过设定连接池最大连接数来防止系统无尽的与数据库连接。更为重要的是我们可以通过连接池的管理机制监视数据库的连接的数量与使用情况,为系统开发测试及性能调整提供依据。
3.2 用JavaBean实现连接池的访问
目前的JDBC驱动中基本都包含了DataSource接口的实现,但不少都没有包含基于DataSource的数据库连接池的实现,如SQLServer 2000的JDBC驱动中就没有这种数据库连接池。但在当前的主流应用服务器上都包含了基于DataSource的数据库连接池的实现。如:Weblogic、Websphere、Tomcat等。本文以Tomcat5.5+Sql Server 2000为平台来研究如何用JavaBean实现Sql Server 2000数据库连接池。
首先将Sql Server 2000的JDBC的驱动文件(jar)放到Tomcat的common/lib目录下,然后配置Tomcat。在Tomcat的serverv.xml和content.xml中配置如下示例代码:
type=""iavax.sq1.DataSource""
driverClassName=""corn.microsoft.jdbc.sqlserver.SQLServerDriver""
password=""123456""
maxIdle=""40""
maxWait=""5050""
usemame=""sa""
url=""jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=down""
maxActive=""100""/>
4 多数据库系统的Java解决方案
众所周知,Java技术是全新的编程技术,它具有平台无关性、面向对象、安全、高性能、分布式,多线程等特点,使Java成为当前最为类型的编程语言和平台。对于多数据库系统联合访问和数据交换,使用Java技术可以解决不同的操作系统和不同的数据库管理系统之间的数据处理。
4.1 使用Java Bean技术实现多数据库的访问
对于基于Web的多数据库访问,Java Bean技术可以提供一个比较强大、灵活的解决方案。首先构造多个Java Bean,在这些模型组件里,我们要处理数据库的连接、定义,查找、插入、删除操作等方法,并要实现多线程,然后构造编写调用Java Bean的Servlet,这样可以实现对多数据库的访问。Java Bean的结构如下:
public class DatabaseConnectBean
{ 定义数据库连接的成员;
定义连接的方法{ }
}
在Servlet中调用Java Bean的过程为:
public class UsedatabaseBean extends HttpServlet{
public void doGet(httpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{ …… }
public void doPost(httpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{//创建Java Bean的对象
DatabaseConnectBean conBean=new DatabaseConnectBean(……); }} 从上述的过程和语句我们可以发现,使用Servlet技术可以访问各种不同类型的数据库,但是使用Servlet技术下的Java Bean技术要保证数据库数据的一致性,应在Java Bean中我们可以使用Java的线程技术中的同步等方法来实现对数据库的连接、操作,但这样将加大程序员的编程实现。所以使用Servlet技术下的Java Bean能同时对多个数据库实体的访问,但实现起来不方便。
4.2 使用EJB技术实现多数据库的访问
对于多数据库访问,EJB技术可以提供一个比较强大、灵活的解决方案。首先构造多个会话Bean,在这些模型组件里,我们要处理数据库的连接、定义,查找、插入、删除操作等方法,然后创建和部署EJB,这样可以实现对多数据库的访问。会话Bean的结构如下:
public class DatabaseConnectSessionBean implements nBean{
public int checkUserLogin(String userid,String password)
throw NameingException,SQLException { …… //得到初始上下文 InitialContext ic=new InitialContext(); //获得数据源
DataSource ds=(DataSource) (数据库JDNI名字);
//建立数据库连接
Connection conn=null;
try{ conn nection(数据库用户名,数据库用户密码);
//进行数据库数据的操作 } }} 从上述的过程和语句我们可以发现,使用EJB技术可以访问各种不同类型的数据库,而且支持数据库的“事务”的机制,这样使对数据的处理能够保证数据的一致性。所以使用EJB技术能实现对多个数据库的访问,而且安全性、持续、事物、并行性和资源的管理由容器来管理,这样使编程具有简单性。
5 结束语
在使用JDBC进行与数据库有关的应用开发中,数据库连接的管理是一个难点。很多时候,连接的混乱管理所造成的系统资源开销过大成为制约大型企业级应用效率的瓶颈。对于众多用户访问的Web应用,采用数据库连接技术的系统在效率和稳定性上比采用传统的其他方式的系统要好很多。本文阐述了使用JDBC访问数据库的技术?讨论了基于连接池技术的数据库连接管理的关键问题并给出了一个实现模型。文章所给出的是连接池管理程序的一种基本模式,为提高系统的整体性能,在此基础上还可以进行很多有意义的扩展。
EJB技术是解决异构数据库环境下的多数据库信息处理一种有效的方法。它不但可以解决数据库异构的问题,更是解决操作系统异构的最有效的方法。这样可以达到不同信息资源的共享及信息的综合统计查询,这也是企事业单位迫切要解决的实际问题。我们认为EJB技术能更好的解决异构数据库环境下的电子商务和电子政务方面的信息交换问题。
参考文献:
.计算机工程,2004(09)
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。 返回电子论文列表