为了实现web层(struts)和持久层(Hibernate)之间的松散耦合,我们采用业务代表(Business Delegate)和DAO(Data Access Object)两种模式。DAO模式为了减少业务逻辑和数据访问逻辑之间的耦合,当一个持久曾框架被应用时,该模式将会减少业务对象和该框架之间的耦合,这样我们可以不修改业务对象而选择不同的持久层框架的实现。实际上在DAO模式中包含两种结构模式:桥(Bridge)模式和适配器(Adaptor)模式。对表现层,我们使用 Struts ;业务层使用 Spring ;对于持久层我们使用的是 Hibernate 。你尽可以取代这里的某个框架而使用你喜欢的框架已达到同样的效果。下图显示了框架被整合起来时,从最高层次看到的视图。
应用层
许多设计良好的web应用,可以被按职责分为四层。这些层次是表现层、持久层、业务层、和领域模型层。每一个层次都有其独特的职责,不能把各自的功能与其它层次相混合。每一个应用层都应该和其它层隔离开来,但允许使用接口在层间进行通信。我们开始来看看每个层,并讨论一下它们各自都应该提供什么和不应该提供什么。
表现层
一个典型的web 应用的末端是表现层。许多Java 开发者都知道Struts提供了什么东西。然而,太多时候,耦合代码比如业务逻辑被放进org.apache.struts.Action中。所以,我们先总结一下Struts之类的框架应该提供什么。下面就是Struts 的职责所在:
- 管理用户的请求和响应
- 提供一个控制起来将调用委托到业务逻辑和其他上游处理
- 将来自于抛出例外的其他层的例外处理到Struts Action 中
- 组装可以在视图中表现的模型对象
-
执行UI 校验
下面是一些经常可以使用Struts进行编码但是不应该和表现层关联的事情:
- 直接和数据库交互,比如JDBC 调用
- 与应用相关的业务逻辑和校验
-
事务管理
在表现层中引入这些类型的代码将导致类型耦合和维护负担。
持久层
一个典型Web应用的另一端是持久层。这也是应用中最容易很快失控的地方。开发者通常低估了自己构建自己的持久层框架的挑战。一个定制的,内部开发的持久层不仅需要大量的开发时间,并且通常缺乏功能和难以管理。目前有许多解决这些问题的开源对象关系映射 (ORM) 框架。特别地,Hibernate 框架就允许Java中的对象-关系的持久性和查询服务。Hibernate 对已经熟悉了SQL 和JDBC API的Java开发者来或具有中度的学习曲线。Hibernate 的持久对象基于POJO和Java群集(collections)。此外,使用Hibernate 不和你的IDE接口。下面列出了你需要在持久性框架中编写的代码类型:
- 查询关系信息到对象中。Hibernate是通过称为HQL的OO查询语言,或者使用更有表现能力的规则 API,来完成这个工作的。除了使用对象而不是表,使用字段而不是列的方式,HQL非常类似于 SQL。也有一些新的特定的HQL 语言特征需要学习;但是,它们是很容易理解和良好编写的。HQL是一种用于查询对象的自然语言,而对象,只需要很少的学习曲线吧。.
- 存储、更新和删除存储在数据库中的信息
-
高级的对象关系映射框架比如Hibernate支持大部分主流SQL数据库,它们支持父/子关系,事务,继承和多态。
下面是应该在持久层避免的一些事情:
- 业务逻辑应该置于应用的更高层中。这里只允许数据访问方法。
-
不应该使持久逻辑和表现逻辑耦合。避免表现组件如JSP或者基于servlet的类中的逻辑直接和数据访问进行通信。通过将持久性逻辑隔离在其自己的层中,应用将具有更加灵活的修改性而不影响到其他层的代码。例如, Hibernate可以使用其他持久框架和API代替,而不需要修改其它层中的代码。
业务层应该负责下面的问题:
- 处理应用的业务逻辑和业务校验
- 管理事务
- 允许与其他层进行交互的接口
- 管理业务级对象之间的依赖性
- 加入了表现和持久层之间的灵活性,以便它们不需要彼此进行直接通信
- 从表现层暴露上下文给业务层以获得业务服务
-
管理从业务层到表现层的实现
- 大小: 9 KB
分享到:
相关推荐
该系统采用了三层架构,分别是表现层、业务逻辑层和数据持久层。 表现层使用Struts框架,通过MVC模式实现用户与系统的交互,主要包含商品展示、购物车、下单、支付等功能模块。其中商品展示模块查询商品信息并展示在...
### Java持久层框架对比 #### 概述 Java持久层框架是用于实现对象与数据库之间的交互,以便在软件开发过程中简化数据库操作的重要工具。本文旨在对比四种常用的Java持久层框架:Hibernate、iBatis(现称MyBatis)...
3. 逻辑复用:业务接口没变,业务层和数据层能直接用。 4. 便于开发:各层接口在开发前规定好,可以独立开发。 5. 方便部署:将各层开发成组件,则可以独立部署。 缺点 1. 降低系统性能:不采用分层结构,可以直接...
这一架构通常包括表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。表现层是用户与系统交互的部分,主要处理用户的请求和展示反馈信息。业务逻辑层则包含了...
在三层架构中,表现层接收用户的输入,将其转化为请求发送给业务逻辑层,并显示由业务层返回的结果。 2. 业务逻辑层(Controller/Service):这一层是系统的核心,处理业务规则、流程和事务管理。它接收来自表现层...
J2EE持久层框架通常提供了一种将应用业务逻辑与底层数据存储分离的方法,这样可以使开发者更加专注于业务逻辑的实现而无需过多关注数据访问的细节。目前较为流行的两种J2EE持久层框架是Enterprise JavaBeans (EJB) ...
它将应用程序分为表现层(View)、业务逻辑层(Controller)和数据访问层(Model),这与MVC(Model-View-Controller)架构模式的理念相吻合。 1. 表现层(View):这是用户与系统交互的部分,通常由Web页面或GUI...
在软件开发过程中,持久层作为连接业务逻辑层和数据库的重要桥梁,其性能的好坏直接影响到应用的整体表现。使用Hibernate进行持久层操作时,如何优化查询响应时间和提高性能成为了一个重要的课题。本文将根据给定的...
标签“三层结构”指的是典型的业务应用架构:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。在这样的架构中,Hibernate常被用作数据访问层的工具,负责与...
Java三层架构开发是一种常见的软件设计模式,它充分利用了MVC(Model-View-Controller)模式,将应用程序分为表现层(View)、业务逻辑层(Controller)和数据访问层(Model),以实现各层职责的分离,提高代码的可...
Java 敏捷持久层技术是现代软件开发中的一个重要组成部分,它简化了数据库操作,使得开发者可以更加专注于业务逻辑,而不是繁琐的数据访问代码。在Java世界里,虽然Hibernate和JPA等框架已经非常成熟,但Ruby on ...
在这个架构中,系统被分为四个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data Access Layer)以及持久层(Persistence Layer)。报表的生成是企业应用中的重要功能...
三层架构是一种常见的软件设计模式,它将应用程序逻辑划分为表现层、业务逻辑层和数据访问层,有助于提高代码的可维护性和可重用性。NHibernate则是一个强大的.NET ORM(对象关系映射)库,能够帮助开发者高效地处理...
- 表现层的示例代码,如ASP.NET MVC的控制器或Java的Servlet类,展示如何处理用户请求并调用业务层。 - 业务逻辑层的类库,包含业务实体(BO, Business Objects)和业务服务接口及实现,展示如何定义和执行业务规则...
在描述中提到的"数据持久层(连接池)"可能是指开发者已经对这些组件进行了封装,以提供更方便的接口和统一的管理策略,比如自动分配、回收连接,以及监控池中连接的状态。 三层架构是软件设计中的常见模式,包括...
三层架构是一种常见的软件设计模式,它将应用程序分为三个逻辑层面:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。具体如下: 1. **表现层**:这是用户与...
它将应用程序分为三个主要层次:表现层(Presentation Layer)、业务层(Business Logic Layer)和数据访问层(Data Access Layer),以实现良好的代码组织和职责分离,提高代码的可维护性和重用性。 1. 表现层...
这种架构将应用程序分为三个主要部分:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。以下是对这三个层次的详细解释: 1. 表现层(Presentation Layer):...
数据持久层在基于J2EE的应用系统开发中是一个关键的层面,它在企业应用程序中负责实现持久数据管理。随着面向对象编程思想的普及,Java应用程序中的数据持久层设计成为了一个复杂的任务,这是因为关系数据库与面向...