• 人民日报人民论坛:为敢担当的干部担当 2019-03-17
  • 重温高考40年 制度变革初心不变 2019-03-04
  • 买了S400就禁售F35战机?土防长:美国这是勒索 2019-03-04
  • 第529期:辅助降压、缓解便秘……薯类食物好处多多,怎样吃更健康? 2019-01-16
  • 一“证”在手  产品畅行海内外 2019-01-16
  • 有力过好多次了,差一点丢了条膀子。 2019-01-04
  • 南方都市报手机客户端·奥一网 2018-12-21
  • 青藏线上的绿色守护者 2018-12-21
  • 北美职业冰球联盟深圳: 冰球打架中国对韩国

    北京 切换校区

    全国24小时免费热线

    400-009-1906

    J2EE的表现层、持久层、业务层

    时间:2018-11-22   来源:尚学堂   阅读:181

    ? ? ? ?为了实现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 的职责所在:

    ? ? ? ?1.管理用户的请求和响应

    ? ? ? ?2.提供一个控制起来将调用委托到业务逻辑和其他上游处理

    ? ? ? ?3.将来自于抛出例外的其他层的例外处理到Struts Action 中

    ? ? ? ?4.组装可以在视图中表现的模型对象

    ? ? ? ?5.执行UI 校验

    ? ? ? ?下面是一些经??梢允褂肧truts进行编码但是不应该和表现层关联的事情:

    ? ? ? ?1.直接和数据库交互,比如JDBC 调用

    ? ? ? ?2.与应用相关的业务逻辑和校验

    ? ? ? ?3.事务管理

    ? ? ? ?在表现层中引入这些类型的代码将导致类型耦合和维护负担。

    ? ? ? ?持久层

    ? ? ? ?一个典型Web应用的另一端是持久层。这也是应用中最容易很快失控的地方??⒄咄ǔ5凸懒俗约汗菇ㄗ约旱某志貌憧蚣艿奶粽?。一个定制的,内部开发的持久层不仅需要大量的开发时间,并且通常缺乏功能和难以管理。目前有许多解决这些问题的开源对象关系映射 (ORM) 框架。特别地,Hibernate 框架就允许Java中的对象-关系的持久性和查询服务。Hibernate 对已经熟悉了SQL 和JDBC API的Java开发者来或具有中度的学习曲线。Hibernate 的持久对象基于POJO和Java群集(collections)。此外,使用Hibernate 不和你的IDE接口。下面列出了你需要在持久性框架中编写的代码类型:

    ? ? ? ?1.查询关系信息到对象中。Hibernate是通过称为HQL的OO查询语言,或者使用更有表现能力的规则API,来完成这个工作的。除了使用对象而不是表,使用字段而不是列的方式,HQL非常类似于 SQL。也有一些新的特定的HQL 语言特征需要学习;但是,它们是很容易理解和良好编写的。HQL是一种用于查询对象的自然语言,而对象,只需要很少的学习曲线吧。

    ? ? ? ?2.存储、更新和删除存储在数据库中的信息

    ? ? ? ?3.高级的对象关系映射框架比如Hibernate支持大部分主流SQL数据库,它们支持父/子关系,事务,继承和多态。

    ? ? ? ?下面是应该在持久层避免的一些事情:

    ? ? ? ?1.业务逻辑应该置于应用的更高层中。这里只允许数据访问方法。

    ? ? ? ?2.不应该使持久逻辑和表现逻辑耦合。避免表现组件如JSP或者基于servlet的类中的逻辑直接和数据访问进行通信。通过将持久性逻辑隔离在其自己的层中,应用将具有更加灵活的修改性而不影响到其他层的代码。例如, Hibernate可以使用其他持久框架和API代替,而不需要修改其它层中的代码。

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

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

    ? ? ? ?2.管理事务

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

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

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

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

    ? ? ? ?7.管理从业务层到表现层的实

     

    相关资讯

    • 北京校区
    • 山西校区
    • 郑州校区
    • 武汉校区
    • 四川校区
    • 长沙校区
    • 深圳校区
    • 上海校区
    • 广州校区
    • 保定招生办

    北京海淀区校区(总部):北京市海淀区西三旗街道建材城西路中腾建华商务大厦东侧二层尚学堂
    北京京南校区:北京亦庄经济开发区科创十四街6号院1号楼 赛蒂国际工业园
    咨询电话:400-009-1906 / 010-56233821
    面授课程: JavaEE培训、 大数据就业班培训、 大数据云计算周末班培训、 零基础大数据连读班培训、 大数据云计算高手班培训、 人工智能周末班培训、人工智能+Python全栈培训、 H5+PHP全栈工程师培训

    山西学区地址:山西省晋中市榆次区大学城大学生活广场万科商业A1座702

    郑州学区地址:河南电子商务产业园6号楼4层407
    咨询电话:0371-55177956

    武汉学区地址:湖北省武汉市江夏区江夏大道26号 宏信悦谷创业园4楼
    咨询电话:027-87989193

    四川学区地址:成都市高新区锦晖西一街99号布鲁明顿大厦2栋1003室
    咨询电话:028-65176856 / 13880900114

    网址://www.cssxt.com/
    咨询电话:0731-83072091

    深圳校区地址:深圳市宝安区航城街道航城大道航城创新创业园A4栋210(固戍地铁站C出口)
    咨询电话:0755-23061965 / 18898413781

    上海尚学堂松江校区地址:上海市松江区荣乐东路2369弄45号绿地伯顿大厦2层
    咨询电话:021-67690939

    广州校区地址:广州市天河区元岗横路31号慧通产业广场B区B1栋6楼尚学堂(地铁3号线或6号线到“天河客运站”D出口,右拐直走约800米)
    咨询电话:020-2989 6995

    保定招生办公室

    地址:河北省保定市竞秀区朝阳南大街777号鸿悦国际1101室

    电话:15132423123

    Copyright 2006-2019 北京尚学堂科技有限公司  京ICP备13018289号-19  京公网安备11010802015183  
    媒体联系:18610174079 闫老师  

    Java基础班,免费试学三周

  • 人民日报人民论坛:为敢担当的干部担当 2019-03-17
  • 重温高考40年 制度变革初心不变 2019-03-04
  • 买了S400就禁售F35战机?土防长:美国这是勒索 2019-03-04
  • 第529期:辅助降压、缓解便秘……薯类食物好处多多,怎样吃更健康? 2019-01-16
  • 一“证”在手  产品畅行海内外 2019-01-16
  • 有力过好多次了,差一点丢了条膀子。 2019-01-04
  • 南方都市报手机客户端·奥一网 2018-12-21
  • 青藏线上的绿色守护者 2018-12-21