基于Struts+hibernate框架的研究
2009-03-30刘明
刘 明
[摘要]要开发现实世界的应用程序,特别是大规模的企业Web应用程序,开发人员必然会发现他们必须创建某种框架。J2EE提供针对Web的基本平台,在经典的J2EE四层体系结构的基础上增加数据持久层,提出基于J2EB五层体系结构的web开发框架;分析基于Struts框架的J2EE架构中实现对象持久性的局限性,从中分离出对象持久层,并将Hibernate这个面向对象的轻量级对象持久性技术集成到该架构。
[关键词]struts hibernate web j2EE
中图分类号:TP3文献标识码:A文章编号:1571—7597(2009)0210063-01
一、集成Struts框架与Hibernate框架实现MVC设计模式
Struts作为基于模型视图控制器模式的应用架构,具有组件的模块化、灵活性和重用性的优点。但是Struts框架主要是针对表示层设计的,对于后端的业务逻辑层支持不是很强,在进行项目开发中存在以下局限:
1.只能横向分工,按模块来划分工作,软件开发成本相应较高:
2.需要花很多时间在数据层的包装以及不同模块之间进行协调和沟通,导致开发时间的增加:
3.项目移植性相对较差,可能需要为不同数据库编写不同的SQL语句;
4.项目扩展性相对较差,适应新的需求或变更时要修改数据库表结构、重新编写SOL语句、备份数据库等,对人员要求也相应较高;
5.由于开发人员数据库操作水平参差不齐,开发经验也不尽相同,导致系统性能可能会相对较差。
Hibernate是一个开放源代码的O/R mapping(对象/关系映射)框架,它对JDBc进行了轻量级的对象封装,以面向对象机制来处理数据库操作。Hibernate不仅管理Java类到数据库表的映射,还提供数据查询和获取数据的方法,大幅度减少开发时人工使用SQL和JDBC处理数据的时间。因此可以将Struts中的模型层分成两部分:一部分负责业务逻辑;另一部分使用Hibernate实现对象持久性处理。同时分离出具体业务逻辑,新建一个业务逻辑层,专门负责用Hibernate来实现业务逻辑和持久性对象的交互。图3显示了集成Struts和Hibernate的MVC模型。Struts和Hibernate框架的整合实现了控制流、业务调用、表示这三者的分离,使系统在开发效率、可维护性、可扩展性方面均有良好的改进。
二、集成Struts和Hibe rnate实现J2EE分层架构
根据前面的分析,将Struts与Hibernate框架进行集成,构成了一个新的Web应用的开发框架,实现了J2EE应用系统的多层架构。该框架一方面继承Struts框架在表示层的优点,提供完善的标记库,负责页面请求的接收和转发,实现了表示逻辑和业务逻辑的分离;另一方面在数据持久层等方面发挥Hibernate框架的特点,由Hibernate框架实现持久层和事务的封装,使业务逻辑与数据库访问分开。这样有利于开发人员将注意力集中在业务逻辑的实现上,有利于系统的可维护性等。
集成Struts和Hibernate实现J2EE分层架构如图2所示。系统采用的五层结构设计由客户层、Web层、业务逻辑层、数据持久层、数据库层组成。客户层运行在用户计算机的Web浏览器中;Web层运行在Web服务器中,它使用Struts框架技术实现,提供了接收/响应客户端请求,控制整个系统工作流程,与业务逻辑层交互以及格式化业务数据并动态生成Web页面等功能;业务逻辑层负责实现整个系统的核心业务逻辑,由JavaBeans或EJB来实现;数据持久层使用Hibernate框架技术实现,完成对象和关系的映射,负责对数据库进行操作。
下面根据图4对系统的各分层功能进行简单分析:
1.客户层。它是用户用浏览器看到并直接与系统交互的层,主要是由HTML语言形成的网页界面。
2.Web层。它从客户层获得客户的输入,传递给业务逻辑层的组件,再将从业务逻辑层获得的处理结果以HTML文件的形式输出到客户端,形成网页界面。Web层由Servlet和JSP程序组成,封装在Web容器中。业务流程控制一般均由控制器Servlet来开发,响应用户的查询等请求并调用业务逻辑层的JavaBean来实现复杂的商务逻辑。
3.业务逻辑层。处理表示逻辑层传递过来的用户响应,并将结果返回给客户层。业务逻辑层封装了系统提供给用户的接口,是直接处理用户请求的中心。这一层主要由JavaBean来实现。JavaBean的主要任务是处理商务逻辑,与客户端交互,返回给它相应的操作结果等。
4.数据持久层。它完成持久对象到关系数据库的映射,并对持久对象进行操作。业务逻辑模块由Hibernate通过O/R映射文件实现对具体数据源的操作(即穿过持久层映射到具体的某个数据表),完成对数据库的操作。对于小型的项目来说,这种实现确实是很高效且低成本的。
5.数据库层。对象持久性的具体实现,可以是关系数据库管理系统、文件存储和对象数据库存储管理系统。
三、结束语
本文在传统的J2EE框架中引入面向对象机制的数据持久层,使业务逻辑处理层有效地分离和隐藏了数据读取和操纵中的所有数据访问代码细节,将客户应用程序和底层存储机制隔离开,完全抽象出开发应用程序时使用的数据物理细节,构建了更为有效的松耦合多层次web开发模型。
作者简介:
刘明,女,汉族,辽宁省朝阳市人,大连交通大学软件工程在读硕士,朝阳师范高等专科学校数计系助教,研究方向:javaweb开发。