为了实现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代替,而不需要修改其它层中的代码。

业务层应该负责下面的问题:

处理应用的业务逻辑和业务校验

管理事务

允许与其他层进行交互的接口

管理业务级对象之间的依赖性

加入了表现和持久层之间的灵活性,以便它们不需要彼此进行直接通信

从表现层暴露上下文给业务层以获得业务服务

管理从业务层到表现层的实现

业务层 java_表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)...相关推荐

  1. 写写关于持久层,业务层和控制层的自己看法

    写写关于持久层,业务层和控制层的自己看法 1:持久层 2:业务层 3:控制层 1:持久层 持久层也叫DAO层,主要工作是负责给数据库做CRUD操作,并把这些数据库操作提供给业务层做处理.如果比作做饭的 ...

  2. request.getParameter和SpringMVC后台控制层获取参数的方式

    **1. request.getParameter** 转载于:http://blog.csdn.net/moreorless/article/details/4199677 一. 简单的对比 req ...

  3. 表现层(jsp)、持久层(类似dao)、业务层(逻辑层、service层)、模型(javabean)、控制层(action)...

    转自:http://www.blogjava.net/jiabao/archive/2007/04/08/109189.html 为了实现web层(struts)和持久层(Hibernate)之间的松 ...

  4. JAVA三层架构,持久层,业务层,表现层的理解

    转自:https://blog.csdn.net/ljf_study/article/details/64443653 SSH: Struts(表示层)+Spring(业务层)+Hibernate(持 ...

  5. java系统项目分为哪五大层次?控制层_业务_一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构-转...

    表现层就是看到的东西,比如你现在看到的当前页面 控制层就将你的请求从页面传到后台代码 逻辑层就是处理你的请求的代码 DAO层就是将数据存到数据库中的代码 数据库就是数据库了,存东西用的 ,DAO层就是 ...

  6. 控制层远程调用业务层_如何应用数据访问服务层分离系统中的业务层和持久层之间耦合关系...

    软件项目实训及课程设计指导--如何应用数据访问服务层分离业务层和持久层之间耦合关系 作者已经在本系列文章<软件项目实训及课程设计指导--如何正确地设计J2EE应用系统持久层中的各个组件结构及关系 ...

  7. android ui层 交互层 业务逻辑层 服务层,表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)...

    三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了"高内聚,低耦 ...

  8. 业务层 、服务层、数据层、表现层

    表现层:它一方面为用户提供了交互的工具,另一方面也为显示和提交数据实现了一定的逻辑(页面展示和各种交互包括提交) 业务逻辑层:包含了系统所需要的所有功能上的算法和计算过程,并与数据访问层和表现层交互. ...

  9. 一个项目中说系统分为表现层、控制层、逻辑层、DAO层和最终数据库五层架构...

    表现层就是看到的东西,比如你现在看到的当前页面控制层就将你的请求从页面传到后台代码逻辑层就是处理你的请求的代码DAO层就是将数据存到数据库中的代码数据库就是数据库了,存东西用的DAO层就是将访问数据库 ...

最新文章

  1. smarty模板基本语法
  2. 系统信息命令(uname、dmesg、df、hostname、free)
  3. html5制作线路图,HTML5绘制上海地铁线路图
  4. datatables隐藏列设置及获取隐藏列的值
  5. linux 下Eclipse for C/C++的不常见设置
  6. 图像处理--知识点整理
  7. ubuntu系统共享桌面的使用和配置
  8. 有负数c语言除法,C语言负数的除法和求余运算
  9. flex实现三栏等分布局
  10. (转载)一级域名(顶级域名),二级域名,主域名,次域名,父域名,子域名联系与区别及域名带不带www的区别
  11. java id pid 递归,父子结构数据(id,pid)递归查询所有子id合集和父id合集
  12. 我看:“不患寡而患不均” 以及 “饥寒起盗心”
  13. 500. Keyboard Row
  14. 数据挖掘:实用案例分析 下载_真经阁丨萌低龄,超实用“萌系”呈现技巧及设计案例分析...
  15. 深圳python 培训班价格
  16. excel数据表转成insert语句插入数据库
  17. 四川大学计算机科学保研夏令营面试面经
  18. 2、MySQL数据库-表的修改
  19. nnunet 扩充流程
  20. 夯实基础——P1830 轰炸III

热门文章

  1. React虚拟滚动介绍与实现
  2. markdown、mathjax 论文中的上标小黑点怎么打出来
  3. Money Line
  4. CentOS rpm卸载
  5. 日暮·第二章·烽烟传讯
  6. 开头很艰难,但也要写下去
  7. 5.1统计英文文件中的单词数python
  8. 日本之行与日本人印象
  9. 300元的蓝牙耳机什么牌子好?300内无线蓝牙耳机推荐
  10. 中国互联网综合实力100强:猿辅导第39