admin 管理员组文章数量: 1086019
2024年3月12日发(作者:sqlserver获取当前时间的日期)
维普资讯
基于EJB的数据库访问技术
赵明李陶深吕立坚顾小锋
(广西大学计算机与信息I程学院,南宁530004)
E-mail:IIj ̄m 168@263 net
摘要分析EJB组件访问敷据库的实现技术厦优势,培出EJB体系结构中Session Beans乖Entily Bean ̄访问数据库
的实现过程
关键词EJB Enterprise BeAins JDBC敷据库
文章编号1002—8331一(2002)I3—0192—03 文献标识码A 中图分类号I'P311
Database Accessing Method Based on EJB
Zhao Ming Li Taoshen Lii Lijian Gu Xiaofeng
(College of Computer and Information Engineering,Guangxi University,Nanning 530004)
Abstract:This paper analysis database accessing method of KIB enmponenl and their advantages,百ve implementation
with Session Beans and Entity-Beans in EJB architecture
Keywords:EJB,Enterprise Beans.JI)BC Database
l 引言 .
数据库的雎力,解决了数据序容易崩溃和异常的问题
E】B tEnterp ̄se JavaBeavs)是一韩 {{分婶武的多珐结
构 面向对象技术及跨平台特点的构件体系结构I。J 遵循EJB
规范,企业开发人员只颓将注意力集中在编写商务逻辑方面.
而所有复杂的T作(如处理事务行为 安争、远程客厂1连接、生
命周期管理、其享或线程的代码编写等)都交给丁EJB服务器
和EJB容器束完成。它的出现 l起了业界的极大关注.并正在
成为开发大型企业应用程序特别是电子商务的主流技术
数据库访问是EJB体系结构中1分重要的环节,是开发
高教企业缎应用祥序的关键技术之一。薛文探讨在EJB巾
Enterprise Beans组件如何访问数据库的技术.并给H{相应实
现过程
(3)数据的安全性好。安全是网络 算的一个重要方而 t
EJB体系结掏中,可住服务器端、客r1端、网络、垃用程序千¨数
据库等5个层次卜提供安辛服务 为 业级的应用系统提供灵
恬 方便的各种层次的安全措施,确保系统的安全口』靠
3 EJB连接数据库的方式
JDBC ̄是一组用米执行sQ]ig-句的Java语 ’ 应用程序编
程接口API.它包括一系列用Java语- 编写的类和接口.为数
据库开发者开发数据库应州 序提供_『标准的府州稗, 编
接口。JDBC提供的编程接口南阿ii【;分组成:一是为应用程序占i
提供的面向应用程序的编程接17 JI)BC AP[;二是为备十商蛆
数据库厂商提供的供底层71 发的驱动程序接ff JDBC Driver
2 EJB组件访问数据库的优势
概而占之,利用EIB组什寅现数据库访问具有以下儿个
方面的优势:
API H前市场上所有的主流数据库产品(如Oraele syIlase
ln rmafix、DB2等 都有相应的JI)BC驱动程序, 它没有
JDBC驱动程序的数据库产 也llr通过JI)BC—OI)BC桥咪进行
驱功。EIB硅接数据库的 式f『以卜两种.即JDBC
DriverMana ̄er方式和连接池方 。
(1)易于实现对异种数据库和分布式数据库的 问 EJ可
各种不同的数据库之问进行对话.JDBC(Java Database
Connectivity)提供r连接各种 同数据库的统一接口和访问方
法 另外.因为 B使用标准的 于CORBA的井布式模
Java RMI(Java Remote Method lnvoc ̄ion).Enterprise Beans
3.1 JDBC DriverManager方式
JI)BC I)fiverManager方式是由JI)BC驱动程序管理器使
用getConneetinn方法建赢的 它荏接数据库的方式如罔1所不
组件通过Java RMI进行本地或远程访r口】,客户和Enterprise
Beans组件都不必关心彼此的位骨
(2)提高数据库访问的性能 Enterprise Beans是运行在
服务器端的跨平古、可 用组件.解决r多用 并发访削太容
量数据库所产叶:的1 题 EJB服务器提供对连接池的支持,减
少丁系统建立与数据库连接的开销.极太地提高丁查询的速
度 EJB容器负责数据库与组件的同步r叫题,减轻 客J 端对
基盒项目:广西自然科学基金项I:1(编号:桂科自9912009)
围i IDBC Dri ̄erManager方式
作者简介:赵明.学上 讲帅,主要研究 向为数据库 il算机[叫络。李陶洋,碗上.教授 主要研究 向为讣布式数据 、CAD
主要研究方向为计箅机网络、数据库
^专.上程0巾
192 2002.13 计算机工程与应用
维普资讯
采用JDBC 1)irverManager访I',11数据库的步骤如下:
(1)通过调崩方法Class.fnrName()显 加数驱动程序
(2)埘川DriverManager.getConnectbm() 法发出连接请
Enterprise Beans组件包含r处理 、 数据的应用逻辑.
它有两种类 的:}':ntity(实体)bean和Session(空话)bean
4 l Entity Beans访问数据库
一
出一目体使用方法如下
L)riverManager.getConnection ̄url,“userlD””pressed”);
..
个企业级Entity Bean代丧扑A性存储设备中的一个商
业实体对象,叮定义成数据库表中的一个记录,也 n 定义成
数据库表间的关联视罔。Entity Beans l存的 B容器提供r
一
"/url为JDBC URI .User[D为坩 标识,P啪 l为H|户ff々,
(31创建Statement对象。建 连接后.『叮用Statement对象
发送SQL语句刮数据库中。这里的Statemeot对象足Ⅲ
(innectaion的方法CreateStatement创建的。
种工具将Entity]leans中的扑A性宁段映射到数据库表rf1
的列.并管埋着Entity Beans 数据1车同步问题 Entity beans
具有持久性、共享性井南主键(Primau,keys)唯一标阻的特点
征Entity Beart L}|定艾r一组方法束访『n】数据l莘、这组方
(4】利用 录集计象BesultSet保存结粜集:其L}|包含符合
SQL语句中条件的所有 .并 通过一套 法来防问这些衍中
的数据。
法 SQL语句的对应盖系如表l所示
表】对应美系表
采用卜进模式的田 登录到系统时,必颓先 式加载驱动
程序创建畦接,完成访 数据库的操作后再碾式断开与数据库
的连接 这种 的优点足较是活,不足之处足花费存 数据
庠连接和断开的时问开销比较大.并且谶连接 i能共享。
3_2连接池方式
连接池是JDBC20标准扩展API,主要作用是宜现连接资
诼共享.减少为每一个操作建 数据库连接的开销 脚B服务
器支扑连接池.不同的EJB服务器创建连接池的方法有所不
同 EJB容器维护数据库连接池,当一个Enterprise Bean请求
一
Entity Bean冉CMP(Container—Managed Persistence)和
BMP(Bean—Managed Persistence)Entily Bean两种形式 编写
CMP Entity Beans时.开发人员不必编写数据库中持久存储
Bean状态的编码,进些代码在部署阶段由应用服务器自动生
个眭接时,如果畦接池中没有可用的连接. B容器先创建
个连接并分配给Enterprise Bean 因为连接所耗费的时间已
连接;如果连接池中打可用的连接,EJB容器从连接池中取出
一
成,也不要求在Bean代码中使用JDBC2 0 API来访问数据库,
容器负责完成这 丁作。CMP Entity Beans的忧点是可快速开
发应用系统,提高应用程序的可移植性,缺点是小支持表的关
联,Bean的灵活性有所降低 编写BMP Entity Beans时, 发
人员必须编写代码对持A性数据进行管坪 BMP Entity Beaus
支持表的关联.增强r Bean的灵活性.但可移植性有所降低
下面是CMP Entity Beans和BMP Entity Beans访『 数据库
的两个实例1 0 。
侧2:cMP Entity Beaus请问数据库的操作
// sec.bonus为数据表TAB中的宇段
package dh.emily;
经枉创建时完成,Enterprise Bean能快速获得一个连接,且当
Enterprise Bean完成对数据库的连接调用后即释放泼琏接,所
以Enterprise Bean所占州连接时问非常短.同一个连接能连续
设多个Enterprise Bean共享。连接池连接数据『年的方式如 2
所不
囤2连接池方式
import j…rmi RemoleException;
import i …eih CrenleExc*ption:
例1;在J2ee中通过在应用服务器的属性文件中指定
jdbc.drivers和jdbc.datasources的值来设置数据库连接池。下面
是具体的变现语句:
1dbo.drivers=oracte ldbo dtverOraoleDriver
import Javax.ejb.EniityBean;
import ja .ejb EnlityCont ̄xI;
public crass BonusBean implements EntilyBean『
public double bonue:
public Slritlg s0(-sec:
//or ̄'le.jdhc driver.Orac[eDrlver为数据库驱动程序名
Jdbc datasourc ̄=Jdbo/oraeledb[jdN':oracle:thin:@】92[68 90 9:
152l( eI
private EntilyConlexl 【x:
pubtic doubte getBonus()『
//'0raoledb为JND1名.jdbc:oracte:thin:@l92.168 90.9:l52l:oml
为ur1名
r ̄tum this bonus:】
pubLic String gelS ̄See(){
n m this…。;1
客户端通过初始化上下文和JNDI(Java Naming and
Directo ̄Interface)服务束获取琏接池中DataSouree的信息.
并通过DataSnurce束获得一个琏接 下面语句实现客广端与数
据库的连接
InitialConlext ie=ne ̄InitlalContext();
public Stfng ejbCmate(duu[Je bonus Siring 0c ec)thr ̄s Create
Excep_ion{
//Called by container after ̄lEutilyConlext
hits.s0(sef-一r-Hec:
Ihis.bonu ̄bonus;
retHrfl null:
DataSoume obj=ic lookup( u,aoledb );
4 Enterprise Beans访问数据库的方式
public*old ejbP ̄tCreate(doubte bonus,Slritlg ncsec)_I
计算机工程与应用2002.13 193
维普资讯
publle wfd啪  ̄etiwte()ff
pri afe Stirng sDBDrive ̄ s蛐jdbc
private Sting C彻nstr
Jd Od D…,;
public void ejbP ̄ivale()【J
public*old eibRemove(){j
public*old ejbI ̄ad(){j
dbc:oracle:thin:@195.95 95 9:I 521:oral
pri*ate String sUse ̄"SYSTEM }
private String sP ̄sword= MANAGER";
private R ̄ultSet rs=null;
public void ejbStore()[J
public void setEntityCont ̄xt(Entity ,Context ctx)fj
public t'oid unsetEntityContext(){j
】
private Connection corm=null;
pdvate Statet ̄nt stmt=null;
在CMP Entity Beans中,ejbLode、ejbStore、ejbPostCreate、
ejbRemove、setEntitvContext、unsetEntiWContext方法只执行空操
作,这些方法的具体实现由 B容器完成(如果需要.也可在
//ex ̄ute a SQL
public ResultSet…cuteQI】ery(Stdng sq]){
//sq]为客户发送的SQ1 查询语句
 ̄=nMI;
其中写^代码)。BMP Entty Beans与CMP Enti ̄,Beans不同
之处在于:在ejbLod ̄、ejbStore、ejbCreate、ejbRemove等方法中
必须写^完成连接和对数据库操作的代码。
例3:BMP Ent Beans访问数据库的程序段
private Conn ̄tion coH;
pri*ate Siring dbName=。 oracledb’
class.forName(sDBDri ̄'er】l
conn=DriverMannger getConneetion(sConnStr rsUser sP ̄sword1
t'3=stmt…uteQue (sq】
cl0se():
eonn cl~();
FeturN rs:
private InitialCont ̄t ic=null;
prirate PreparedStaten]ent ps=null
public void ejbLoad()【
ic=new InitialCont ̄t();
J
【注:在Bean中还应提供异常处理)
DataSoume ds=(DataS.ource)ic]ookup(dbName);
一
从上述过程可见,Enterprise Beans的持久性类 决定了
c ̄=ds getConection();
ps=c ̄pteparedStatewent(..SELECT
SOCSEC= “);
FROM TAB WHERE
个Enterprise Bean是否要编写代码实现连接例行工怍,
Session Beans和BMP Entity Beans必须编写代码来实现
Enterprise Bean与数据库的连接 CMP Entity Beans则不需要
编写连接代码
ps.setStirng(1,this ̄ocsec);
ps ex ̄uteQuery();
ps close();
tclose():
5结束语
从上述EJB访 数据库的技术可见,传统的数据库访问
方案难以实现的分 式、平台无茭和高效性能在EJB体系结
构中可得到很好的解决.尤其是EJB体系结构巾数据库访问
(注:在Bean中还应提供异常处理)
逻辑与应用程序商业逻辑是可分离的,这就使用户能开发独立
的口r重用的商业组件和数据库 件,为企业开发大璋【、高教、复
杂、易于扩展和易于维护的应用程序提供了强有力的开发手
段。(收稿日期:2O01年7月)
4.2 Sesslon Beans访问数据库
Session Bean代表一个客户的短暂会话并完成业务逻辑,
它不是持久性的,并不代表在一个持久数据存储中的数据,但
可代表客户程序访问和更新数据库中的数据 在Session Beans
中.可以通过JDBC DfiverManager连接方式,也可以用连接池
方式连接数据库。既可以通过执行一组SQL语句完成对数据
库的操作,也可以调用Entity Beans完成对数据库的操作 以
下给出Session Bean中用JDBC驱动器管理方式连接数据库
参考文献
I Ed Boman Mastering Enterprise J~Bcan MlNEw YORK:John Wil ̄y
&Sons,Inc,I999
2.Linch G DeMic ̄ife1.L omit YMcinalp,Sanjeer Kfishnan Enterpfi ̄
井用SQL语句访问数据库的程序段。
例4:Se ̄ion Bean访问Oracle 8i数据库的操作
package db.session;
Java ̄eatts Speciifeation[S1.Ve ̄ion 2.0 Calil'ortifa,Copyri曲t(e)2000 Sun
Mic ̄ystenm Inc,2000
3.The Java 2 Ertte ̄prise Edition Developer's Guide http://java sun ̄onu/
j2ee/j2sdkee
public class DBBean implements SossionBean
4.Sun Miemsystems IncJDBC2 0 API.hltp://ja ̄'a—com/products/jdbe
7 Sandhu R S.Jajodia SData and Database Security and Contolrs[M]
lfandbook of Infonmtion Security Management,Auerbach Publishers,
1993:481"-499
【上接185页)
4 A Guide to Undentmlding DJacretiotn ̄,Access C ̄tml in T ̄sted
Systems[M]NCSC-TG-t ̄3.National Comput ̄Security Center.1987
5 Smith C L A su ̄'ey to determine federal agency needs for a e—
8 Sandhu R S 。e Base Access Control Model 】.IEEE Computer
based  ̄ntrol security preductic】In:Software Engin ̄llng Stan-
1993:26(I1): 19
d ds Symposium and Forum.1997:222 ̄232
9.Ferelolao D F,Kuhn D R.Role—Based Access Control【clIn:P of
the 15 NIST—NSA Natiotud Computer Security Conf,Baltimore,MD,
I992 554~563
6 Sandhu R S.Saraaratl P Access Co ̄ntrol:Principles and Practice[J]
1EEE Communications Magazine,1994;32(9):40~48
194 2002 13计算机工程与应用
版权声明:本文标题:基于EJB的数据库访问技术 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1710241516a563948.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论