admin 管理员组文章数量: 1184232
2024年3月28日发(作者:melissa)
维普资讯
第16卷第lJ期
计算机技术与发展
Vo1.16 NO.Il
2006年lJ月
COMPUTER TECHNOLOGY AND DEVEI )PMENT
Nov. 2006
基于Hibernate和Spring框架的Web应用研究
华 涛 一,郝克刚 ,葛 玮
(I.西北大学计算机科学系软件工程研究所,陕西西安710069;
2.聊城大学网络信息中心,山东聊城252059)
摘要:Hibernate是当前广泛应用的一种ORM数据库访问框架,它提供从对象模型到关系型数据模型的映射 Spring框
架是一种轻量级J2EE应用框架,是针对Bean的生命周期进行管理的轻量级容器。介绍这两种框架并将它们结合起来形
成一个业务持久层解决方案。这里提出使用Sprign框架来管理业务对象,通过Hibenrate作为数据持久层的方案来开发B/
S架构的Web应用,并将此框架结构应用于实际项目的设计与开发中
关键词:Hibenrate;对象关系映射;Spring;反转控制
中图分类号:TI)311.5 文献标识码:A 文章编号:1673—629X(2006)【1—0084—03
Web Research Based on Hibernate and Spring Frameworks
HUA Tao ~,HAO Ke—gang ,GE Wei
(【. ̄ftware Eng.Inst.,Dept.of( ̄mputer Science,Northwest University,Xi’an 710069,China
2.Network Infommtion Center of Liacx:heng UniversitY,Liaocheng 252059,China)
Abstract:Hibernate is a widely used,high perfomaanee ORM framework that provide the map1)ing between data m(xtel and relational data
moda1.Spring framework is a light—level J2EE framework and a light—level container of managing beans’life recycle In this paper.Hi一
'
0ernate and Spring frm'nework is introduced in detail.and incorporate the two frameworks and foma a re* ̄lution of busin ̄.'ss and t ̄'rsistence
layer.Here Web application based on B/S framework is developed with Spring f,'mnework which manage bLlsinc ohjects and Hibernate
which is a re.solution of data persistence layer.And apply the re 1uti0n to practice on the design and prog, arI1Ining of projcet
Key words:Hibernate;ORM;Spring;ICK;
0 引 言
用EIB容器进行开发和调试需要耗费大量时间。
随着网上购物、电子商务和电子政务等web应用越
3)对于企业级应用开发,业务对象十分庞大而且对象
来越多,人们的工作效率得以提高。但是网络应用开发效
之间关系错综复杂。所以,如何对它们进行良好管理也是
率低、开发周期长等特点限制了网络应用的发展。J2EE
一
个问题。
的出现,逐渐改变了这一趋势而且J2EE也成为企业级网
文中提出使用一种ORM框架I--tibemate,在Java对象
络应用程序事实的开发标准。但是,在J2EE应用程序的
和数据库表之间建立映射关系,以形成相对独立的对象持
开发过程中也出现了很多问题:
久层,从而降低程序和数据库的耦合度并简化程序开发。
1)随着面向对象技术和关系型数据库的广泛应用,它
另外,使用一种轻量级J2EE框架Spring来管理对象持久
们之间的矛盾也逐渐突出:两者之间如何映射;在业务逻
层中的业务对象,使用松散耦合的方式集成分散的系统
辑的开发过程中仍然使用SQL和JDI 技术进行数据库
操作,编程过于复杂;当数据模型发生变化时,代码的变化
1框架介绍
量很大,降低了系统的可维护性和扩展性。
1.1 Hibernate框架
2)在J2EE应用程序中,企业级JavaBeans(EJB)构成
Hibcmale是一种基于Java平台开放源代码的对象关
了应用框架的基础。EJB要求应用系统的组件必须继承
系映射(ORM,Object/Relational Mapping)框架。它对JD—
或依赖容器,使得单独测试EJB组件非常困难。以致使
BC进行了轻量级的封装,帮助开发者建立面向对象语言
中的对象与关系型数据的之间的相互映射。它可以使人
收稿日期:2006…02 24
们脱离具体的数据库细节,简化JDBC编程,这样就可以
作者简介:华涛(1980一), ,山东聊城人,硕士研究生,研究方向
实现程序的面向对象化和数据库的移植。并且开发者在
为软什 ̄]--ral,;郝克刚,教授,博:{=_生导师,研究方向为软件:L程、软件
设计阶段可以不必关心具体的数据库情况,完全使用面向
沦、形式化方法;葛玮,副教授,顸:l==生导师,研究方向为软件工
对象思想来建立数据库模型 。
程、软件测试。
Hibernate不仅提供了从Java对象到数据表之间的映
维普资讯
第l1期 华 涛等:基于Hibernate和Spring框架的Web应用研究 ・85・
射,也提供了数据查询和恢复机制。相对于使用JDBC和
SQL来手动操作数据库,Hib12mate-可以大大减少操作数
据库的工作量。另外Hibernate利用装载模式简化了载入
对象及其关系的管理也需要单独的业务层进行处理。所
以,当前的单一的基于MVC架构的开发框架并不适台项
目要求,需要进行若干拓展。具体的系统框架如图1所
示。
类的过程,减少了利用Hibernate本身提供的HQL语言从
数据库提取数据的代码编写量,从而节约开发时问。针对
当前流行的几乎所有数据库,Hibemate都提供了相应的
Dialect进行优化操作,提高了系统的效率。刚刚推出的
Hi ̄rnatc3.0又新增了大量的特性,如对存储过程和XML
系统使用Struts框架、Hibemate框架和Spring框架来
进行架构。通过实现了MVC设计模式的Struts框架来完
成表示层、页面导航和域对象的装配。在view层主要是
使用JSP和tag来完成表示逻辑;控制层主要使用Slruls
框架提供的ActionServlet类和相应XML配置文件进行页
面导航控制;MO(1el层主要是处理域对象的装配和洞用相
持久性的支持等 2'3 。
1.2 Spring框架
Spring框架是一种Java平台开放源代码的轻量级
应的业务组件完成相应逻辑。对于Struts框架在此就不
再详细介绍,这里重点关注业务层和持久层的架构实现
每个业务组件都需要通过调用若干个业务对象来处
J2EE应用框架,它通过对反转控制模式(IOC)和面向方
面编程(AOP)的实现解决了许多:}笙以往J2EE应用开发
中常见的问题。
ICK;模式又叫做依赖注入模式(Dependency Inj21c—
tion),是Spring框架的基础。通常应用代码在使用实例
之前,需要创建对象实例。然而,IOC将创建对象实例的
任务交给IOC容器或者框架,使得应用代码可以直接使
用实例。这样就由实现了IOC模式的Spring框架本身来
理具体的业务逻辑。对于小型系统,业务对象之间关系简
单,管理单个的对象并不困难,直接编写处理代码可以完
成。但是,对于大型的企业级应用,业务对象繁多且它们
之间的关系复杂,开发者通过Spring框架的IOC容器使
得应用中的对象关系清晰、一致,而且一切对象都是可控
的。通过Spring框架的ICK'.容器可以在创建持久化对象
Javabean的相应DAO对象同时将Hibernate组件集成进
来。这样在DAO对象中封装了使用Hibemam组件的数
判断业务对象彼此之间的依赖关系。通过使用IOC,它提
供了有效管理和组织业务对象的一致性方法并且鼓励了
“对接口变成,而不是对类编程”的好习惯。并且lOC降
低组件之间的耦合度,使得单元测试和集成测试更利于展
开 1
据库操作,并且对于它的生命周期可以由Spring框架来
管理,这种架构方式划分了每层的责任,降低了组件之问
的耦合度,减少了大量的数据库编码工作量。
面向对象编程主要是在系统的
垂直切面关注问题,对于系统的横切
面(系统级服务,比如日志、事务、安
全性)关注较少。而AOP允许开发
者动态修改(聊定义的静态模型,
/\
/——、
即可完成对横切面问题的解决。将
这些系统级服务的抽象出来,并加以
/L—_J\ {
业务组什 耋
Spring Container
\、———— /
DataBase
\、
—————
/
实现,使得程序中的重复代码能够大
范围减少。
Spril ̄g框架紧密地集成了AI)P
\ /
图l 系统架构图
实现和IOC容器,从而解决了常见
的应用问题。这种集成是以非侵入
性的方式完成,也意味着可以根据具体项目情况选择其中
某一个或多个模块来使用。
2.2数据持久层实现
Hibemat21框架本质上是一个提供数据库服务的中间
件。它是利用数据库以及其它一些配置文件如hiberna ̄c.
propertk.'s,XML Mapping等来为应用提供数据持久化服
务的。首先,需要创建持久化对象的XML配置文件,通
2项目实例
这里通过一个企业级Web应用程序来简单介绍如何
通过Spring和Hib12mate这两个框架来整合开发系统。
2.1 系统架构
过它Hibernate建立对象映射到数据库。这里,XML配置
文件需要注意各种关系的映射和参数配置,如OUC的
many,on12 to O13.t2,lazy属性等,对系统的性能有很大影响。
另外Hibernate Synchronizer是一种免费的、能够同
该项目是一电信企业效率管理系统。该应用需要对
每天的各种业务模块进行处理分析,生成统计结果和一些
Hib12malc框架配合生成代码的工具。当开发者修改完成
系统管理模块操作,业务对象非常庞大,对系统的可靠性
和安全性要求很高。若仍然使用JDBC和SQL来进行数
据操作,代码量巨大,并且降低了系统的可维护性。业务
I-tibernate映射文件之后,它会自动生成修改后的持久化
对象和相应的DAO对象,减少了手动编写的工作量 持
久层实体和业务对象生成的类图如图2所示。
维普资讯
・
86・ 计算机技术与发展 第16卷
接121 HibemateDAO定义了所有的数据库接口,而作 这里通过图2中Operator对象来说明其集成方式
例子中Operator其对应的相关Spring配置文件如下:
<bean id=“HibernateUtil”cla =“CI1.con1.cudes.I uril Hil)or.
tmteUtil”/>
<bean id=“operatorDAO”cla ̄%=
OperatorI)AO”>
<prot)ertY nallle “se.sionFindcr”>
为DAO的基类HibemateDAOImpl通过Hibernate的API
实现了接口HibemateDAO。对于具体持久化对象的DAO
类来说,只要继承了HibernateDAOImpl类就能完成数据
库操作。例如,保存或更新对象的方法为:
public void saveOrUpdate(Object obj)throws I4iberrmmException{
Tramaction t null:
 ̄ssion S:null;
.
<ref bean==“}tibernareUtil”/>
</pr(perry>
</bean>
try{
Session s:getSe. ̄sion():
Transaction t=S.beginTransaction();
saveOrUpdate(obj,s);
t.mnunit();
Spring框架是通过settcr方法来注入依赖性的 可以
看出在Operator的DAO类中肯定存在一个 s iLm
Finder方法,它本质上是一个Hibernate Sc..sion对象的没
置方法。Hibenatre只有通过S ̄,sion对象才能支持事务处
理。当使用Sprng创建OperatorDAO的实例时,Spril1g的
I()( 容器会自动查找对应的HibcrnatcUtil实例,若不仔
catch(HibemateException cJ{
fi(null!:t)t.rollback();
throw e:
i
finally{
在,则创建其实例,通过setter方法传递给s i11dcr属
if(null!:S)S.close();
}
性。Spring通过I()C容器把DAO对象和封装了Hiber—
hate session对象的HibematcUtil自动搭配起来,对象之『茜j
的关系处理全部交于它处理。
}
上面的语句作为方法封装在HibemateDA.Olnlpl类
中。另外从上面代码中可以看出,与使用JDBC和SQL编
程相比,Hibernate的代码量更少,条例更清晰,最重要的
是脱离了具体数据库细节,修改非常方便。
HibernateDAO
这只是一个应用Spring框架的简单实例。当然,呵
以定义对象的业务组件bean,将对象的DAO通过Spring
容器与其组装起来,以完成与陔对象有关的业务逻辑。由
于Spring采用了大量的]ava反射机制,以非侵略性方式
来设计对象,使得业务组件更加利于测试。它可以避免使
用ElJB重量级容器的种种缺点,如开发和测试困难等。
每 nd0
%
meOrUpdate0
delete(1
oad()
,
3结束语
介绍了Hibernate和Spring框架的特点,详细描述
如何整合这两种框架来卡勾建Web应用,解决了]2EE应用
程序开发中常见的问题,大大减轻了编码的工作量。该实
现方案已经在一个企业级系统中成功应用。
参考文献:
HibernateDAOImpl
\
OperatorDAO Company DAO j XXXDAO
[1]Hibernate Reference I ̄ctmmnralion[EB/OL]2005—04
hrrp://www.hiberna'm org/hib—.does/v3/refercncc/en/
Operator Company
hrml/
[2]董洪衫,窦延平.利用Hil)crnare的.12EE数据持久层的解决
图2持久层类图
方案[J].计算机工程.2004.30:17 19
[3] 田珂,谢世波.方马J2EE数据持久层的解决方案[-l
汁算机工程.2003.29:93—95
2.3业务层集成
有了对象及其DAO,接下来需要考虑如何配置业务
[4]川u啪『1 R Introducing t Spring Framework[EB/OL 2003
一
对象,利用它们来执行Model层请求的逻辑部分,调用持
久层进行数据库操作。为了良好的配置和管理业务对象
及其关系,选择使用实现了I( 和AOP的Spring框架是
一
1 0.hrrp://ⅥⅧ.fl ̄escrversidc conl/ariticles/artMe t ’
1=Spring Framew(,rk.
[5j罗时飞.精通Spring[M].北京:电子工业出版社.2005
种比较好的策略。
《计算机技术与发展》欢迎投稿,欢迎订阅!
版权声明:本文标题:基于Hibernate和Spring框架的Web应用研究 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1711630372a602663.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论