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 

种比较好的策略。 

《计算机技术与发展》欢迎投稿,欢迎订阅! 


本文标签: 对象 业务 数据库 应用 系统