不同数据库访问体系的比较
来源:用户上传
作者: 白鹏 赵向领
摘要:随着电子商务的迅猛发展,依靠单一的数据库建立与访问模式已经逐渐不能满足应用上的需要。该文介绍了两种不同的数据库访问方法,对JDBC与EJB的原理以及工作模式进行了比较,并且由于EJB访问数据库的方式相对复杂,通过一个实例对其工作模式进行了详解。该文旨在向数据库的开发人员提供数据库建立前期关于实现方法选择的一些建议。
关键词:JDBC;EJB;数据库;访问方式
中图分类号:TP312文献标识码:A文章编号:1009-3044(2012)03-0497-02
A Comparison of Different Database Access Systems
BAI Peng, ZHAO Xiang-ling
(College of Air Traffic Management, Civil Aviation University of China, Tianjin 300300, China)
Abstract: As the rapid development of e-commerce, based on a single database access modal can not meet the need of application, this arti? cle describes two different database access methods, compares the principles and operating of JDBC and EJB and gives a detailed access mode description of EJB. It aims to provide some advices to the developer when they establish a pre-selection of the database.
Key words: JDBC; EJB; database; access mode
1 JDBC的介绍
1.1 JDBC简介及结构
JDBC提供了面向对象的数据库访问接口,针对JAVA提供了数据库访问的类库。
JDBC由应用程序、驱动程序管理器、驱动程序和数据源4个组件组成[1]:
1)应用程序:用于数据的发送以及接收。
2)驱动程序管理器:针对不同数据源的驱动程序进行相应处理。
3)驱动程序:提供数据源与对应的应用程序之间的接口。
4)数据源:SQL兼容数据库。
由于JDBC提供了针对面向对象的数据库访问接口,所以应用程序只需要调用JDBC的数据库接口,而复杂的数据库通讯处理则是通过JDBC的驱动程序完成的。这样大大节约了数据的处理成本。1.2 JDBC驱动程序常用的四种工作模式介绍
JDBC驱动程序分为4大类,分别是:1) JDBC/ODBC Bridge;2) Native API Partly Java;3) Net Protocol All Java;4) Native Protocol All Java。Type 1: JDBC/ODBC Bridge
JDBC与ODBC的桥接,由于ODBC比JDBC出现的时间早,并且应用很广泛,支持的数据库类型较多,所以JDBC为了支持更多的数据库类型,联合开发了此类桥接,驱动原理是将JDBC的调用传递给ODBC,经过ODBC编译调用本地数据库驱动对数据库进行操作。
Type 2: Native API Partly Java
由于大部分数据库厂商提供的接口是由C语言编写的,在很大程度上依赖于不同的平台,加大了数据库的操作的复杂度,本地的数据库接口就是为了解决此类问题,通过驱动程序将应用程序的调用信息转化为本地软件接口的调用,在底层的数据库操作完毕后,将处理结果返回给JDBC驱动程序,从而以标准的输入、输出形式降低了人工操作的复杂度。
Type 3: Net Protocol All Java
将JDBC的信息调用转化为网络协议的形式,通过服务器来处理发送的网络协议从而完成数据库的操作。此类的驱动程序较
为灵活,尤其在企业内网的应用中能够发挥较好的效果,比较熟知的Websphere应用服务器就包含了此类的驱动[2],但是由于这种驱动需要在中间层配置其数据库的驱动程序,需要在中间层传递数据,所以它的执行效率会受到影响。
Type 4: Native Protocol All Java
与第三种调用方式相仿,此类模式也是通过将JDBC调用转化为网络协议,与之不同的是此类访问方法是与数据库建立直接的套接字连接,将数据接口直接转化为网络调用,通过网络使得客户端直接调用服务器端的数据库。
2 EJB的介绍
2.1 EJB定义及分类
EJB(Enterprise Java Beans)具有布式服务的多层次结构,提供面向对象技术并且具有跨平台优点的构建体系结构。
EJB提供了三种企业Bean,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(Message Driven Bean),可以将它们视为EJB的三种重要组件。2.1.1消息驱动Bean(MDB)
由于消息驱动与数据库的访问操作无关,所以这里首先介绍消息驱动。MDB是设计用来专门处理基于消息请求的组件。它能够收发异步JMS消息,并能够轻易地与其他EJB进行交互。所以它比较适合用于执行周期长,无需实时反馈的情景。2.1.2会话Bean
会话Bean用于实现业务逻辑,它分为有状态和无状态两种模式,针对客户端发出的调用请求,选择通过JDBC或者实体Bean来实现数据的访问。2.1.3实体Bean
实体Bean(Entity Bean)是持久数据组件,代表存储到外部介质中的对象或者系统资源。客户端可以通过共享来对其发起访问。
2.2会话Bean与实体Bean的区别
Session Bean在J2EE应用程序中被用来完成一些服务器端的业务操作,例如访问数据库、调用其他EJB组件。Entity Bean被用来代表应用系统中用到的数据[3]。
对于客户机:会话Bean是一种非持久性对象,主要实现在服务器上运行的业务逻辑;实体Bean是一种持久性对象,代表存储到外部介质中的对象或者是应用程序中的系统资源。
2.3通过实例比较会话Bean与实体Bean操作的优缺点
通常情况下数据会以表格的方式作为输出显示,这种情形如果使用实体Bean会导致如下问题:
1)引起服务端频繁的数据库查询和加载操作。每次的实体Bean访问都要进行一次find操作,造成效率的低下。2)如果使用Remote接口,会引起频繁的额外网络操作。
3)实体Bean在处理复杂的关系型数据库时,映射会变得非常复杂,会增加建模过程的难度。
因此建议在只需对数据库表数据进行只读访问时候,应该采用JDBC for Reading Pattern,即通过JDBC直接访问数据库。
表1两种方法调用数据库优劣的比较
3总结
由表1所示列出了两种调用方法的优劣比较,其中,EJB的可扩展性的意义是:在数据库建立初期,考虑服务是为500个终端200个并发考虑的,但是业务在一段时间后扩展了,可能达到1000个终端,400个并发。如果架构设计的不好,无法满足使用需求,就会造成前期投资的失败。如果使用EJB,可以将其中一部分的实体Bean部署到其他的服务器上,使得负载均衡,从而减小了人力以及经济方面的损失。
EJB中的实体Bean与JDBC直接调用数据库各有利弊,单独使用JDBC直接操作完全可以达到操作数据库的目的,这一点在功能上与结合EJB进行操作没有区别。问题的关键是我们对于项目的分布能力以及扩展性的要求上,如果预计应用于分布式的系统中,应该优先选择EJB;如果项目的扩展要求不高,使用JDBC也可以满足要求。
参考文献:
[1]郭广军,陈代武.基于JDBC的数据库访问技术的研究[J].南华大学学报,2005,19(2):60-62.
[2]欧阳宏基,葛萌.基于JDBC与设计模式的数据库连接实现方法[J].计算机技术与发展,2011,21(1):85-87.
[3]董久敏,杨旭.电力客户关系管理系统的设计与实现[J].制造业自动化,2011,33(4):149-151.
[4]吴吉义,王中友.MySQL原理与Web系统开发[M].北京:清华大学出版社,2009.
转载注明来源:https://www.xzbu.com/8/view-1604718.htm