基于J2EE多层架构的Web开发框架研究

 摘要:在经典的J2EE四层体系结构的基础上增加数据持久层,提出了基于J2EE五层体系结构的Web开发框架;分析了基于Struts框架的J2EE架构中实现对象持久性的局限性,从中分离出对象持久层,并将Hibernate这个面向对象的轻量级对象持久性技术集成到该架构中;应用DAO设计模式在业务逻辑层与持久层之间设计了多源数据访问组件,抽象和封装了对不同数据源的数据访问操作,实现对不同类型、结构、环境、用法的异构数据库的统一访问。
  关键词: J2EE; 模型—视图—控制器; Struts; Hibernate; 多源数据
  中图分类号:TP302.7文献标志码:A
  文章编号:1001-3695(2008)05-1429-03
  
  1多层架构的Web开发框架模型
  
  1.1J2EE五层体系结构设计
  随着Web应用需要更复杂的表现和逻辑处理,J2EE提出了一种四层体系结构,如图1所示。该结构分为客户层、Web层、业务逻辑层、数据库层。应用的逻辑处理和表现相分离,使得系统具有更为逻辑流程清晰、功能代码复用性强、分布式部署的特点。但是在大多数的实际项目应用中,数据层是关系型数据库,不能明确映射要实现的面向对象的机制,业务逻辑层与数据库交互的过程需要对数据库调用接口作进一步的封装,这在项目的开发和维护上会增加一定的复杂性和管理的难度。一种有效的解决方案是把业务信息按照功能模块拆分开:业务逻辑与数据库访问分开,用户界面与业务逻辑分开,彼此相对独立,任何一方的改变均不会影响对方,或者影响不大。因此本文提出在业务逻辑层与数据库层之间增加一个数据持久层,将四层体系扩展为如图2所示的五层体系,即客户层、Web层、业务逻辑层、数据持久层和数据库层。数据持久层位于数据库之上,隐藏数据读取和操纵中的所有数据访问代码细节,将客户应用程序与底层存储机制隔离开,完全抽象出开发应用程序时使用的数据物理细节。
  业务逻辑层与数据层之间增加一个数据持久层,实现对象与关系数据库之间的映射。利用这个映射框架的机制,对象与关系数据库之间的转换就可以透明地进行,而不用去关心数据库连接、并发性、事务等问题。业务逻辑层直接获取或存储的是清晰的对象,中间的转换过程交给映射框架来处理。
  
  在分层设计中,各层提供的接口是进行层间通信的基础,遵循的原则是实现严格的层间独立、分离,各层的实现细节不对外公开。分层设计图层间通信说明如下:
  a)客户端与表示逻辑层通过HTTP通信,即通过Http-Request和HttpResponse分别接收用户输入和返回执行结果给用户。
  b)表示逻辑层使用Struts框架技术实现,提供了接收/响应客户端请求、控制整个系统工作流程、通过调用action与业务逻辑层交互,以及格式化业务数据并动态生成Web页面等功能。
  c)业务逻辑层与持久层的交互则是JavaBean对Hibernate的调用,通过数据访问对象DAO进行调用。
  d)持久层与数据库的通信是完全由 Hibernate负责的,它将实体映射到数据库,对持久对象操作,并将缓存中的结果同步到数据库。
  1.2集成Struts框架与Hibernate框架实现MVC设计模式
  Struts作为基于模型—视图—控制器模式的应用架构,具有组件的模块化、灵活性和重用性的优点。但是Struts框架主要是针对表示层设计的,对于后端的业务逻辑层支持不是很强,在进行项目开发中存在以下局限:
  a)只能横向分工,按模块来划分工作,软件开发成本相应较高;
  b)需要花很多时间在数据层的包装以及不同模块之间进行协调和沟通,导致开发时间的增加;
  c)项目移植性相对较差,可能需要为不同数据库编写不同的SQL语句;
  d)项目扩展性相对较差,适应新的需求或变更时要修改数据库表结构、重新编写SQL语句、备份数据库等,对人员要求也相应较高;
  e)由于开发人员数据库操作水平参差不齐,开发经验也不尽相同,导致系统性能可能会相对较差。
  Hibernate是一个开放源代码的O/R mapping(对象/关系映射)框架,它对JDBC进行了轻量级的对象封装,以面向对象机制来处理数据库操作。Hibernate不仅管理Java类到数据库表的映射,还提供数据查询和获取数据的方法,大幅度减少开发时人工使用SQL和JDBC处理数据的时间。
  笔者认为应该将Hibernate集成到J2EE架构中,从Struts框架中分离出对象持久性相关部分,交给Hibernate来实现。根据Struts的体系结构,数据库操作工作是由模型层负责处理的,因此可以将Struts中的模型层分成两部分:一部分负责业务逻辑;另一部分使用Hibernate实现对象持久性处理。同时分离出具体业务逻辑,新建一个业务逻辑层,专门负责用Hibernate来实现业务逻辑和持久性对象的交互。
  图3显示了集成Struts和Hibernate的 MVC 模型。Struts和Hibernate框架的整合实现了控制流、业务调用、表示这三者的分离,使系统在开发效率、可维护性、可扩展性方面均有良好的改进。在本模型中,客户层可以看做是V,它是由浏览器显示给用户的 DHTML 界面;业务逻辑层和持久层则为 M,它是系统的核心部分,由 JavaBeans 和 Hibernate 组成;Web 层对应 C,它控制用户对业务逻辑的操作,同时控制将操作结果显示给用户,由 Servlet 和 JSP 程序组成。其中 PO 是调用模型层产生的持久对象,通过 JSP 页面显示给用户。
  1.3集成Struts和Hibernate实现J2EE分层架构
  根据前面的分析,将Struts与Hibernate框架进行集成,构成了一个新的Web应用的开发框架,实现了J2EE应用系统的多层架构。该框架一方面继承Struts框架在表示层的优点,提供完善的标记库,负责页面请求的接收和转发,实现了表示逻辑和业务逻辑的分离;另一方面在数据持久层等方面发挥Hibernate框架的特点,由Hibernate框架实现持久层和事务的封装,使业务逻辑与数据库访问分开。这样形成一个层次清楚、更加简洁、功能更加完善的Web框架,降低各个层次之间的耦合,提高组件的可重用性,减少在代码编辑方面的复杂性,有利于开发人员将注意力集中在业务逻辑的实现上,有利于系统的可维护性等。
  
  集成Struts和Hibernate实现J2EE分层架构如图4所示。系统采用的五层结构设计由客户层、Web层、业务逻辑层、数据持久层、数据库层组成。客户层运行在用户计算机的Web浏览器中;Web层运行在Web服务器中,它使用Struts框架技术实现,提供了接收/响应客户端请求,控制整个系统工作流程,与业务逻辑层交互以及格式化业务数据并动态生成Web页面等功能;业务逻辑层负责实现整个系统的核心业务逻辑,由JavaBeans或EJB来实现;数据持久层使用Hibernate框架技术实现,完成对象和关系的映射,负责对数据库进行操作。
  
  下面根据图4对系统的各分层功能进行简单分析:
  a)客户层。它是用户用浏览器看到并直接与系统交互的层,主要是由HTML语言形成的网页界面。
  b)Web层。它从客户层获得客户的输入,传递给业务逻辑层的组件,再将从业务逻辑层获得的处理结果以HTML文件的形式输出到客户端,形成网页界面。Web层由Servlet和JSP程序组成,封装在Web容器中。业务流程控制一般均由控制器Servlet来开发,响应用户的查询等请求并调用业务逻辑层的JavaBean来实现复杂的商务逻辑。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值