`
FansUnion
  • 浏览: 153216 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

SSH分层开发的好处

 
阅读更多
本文是直接粘贴网上的资料。
在Struts + Spring + Hibernate的组合框架模式中,三者各自的特点都是什么?
Struts 的MVC设计模式可以使我们的逻辑变得很清晰。
Spring 的IOC和AOP可以使我们的产品在最大限度上解藕。
hibernate的当然就是实体对象的持久化了

典型的J2EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。

表现层是传统的JSP技术,自1999年问世以来,经过多年的发展,其广泛的应用和稳定的表现,为其作为表现层技术打下了坚实的基础。
中间层采用的是流行的Spring+Hibernate,为了将控制层与业务逻辑层分离,又细分为以下几种。
Web层,就是MVC模式里面的“C”(controller),负责控制业务逻辑层与表现层的交互,调用业务逻辑层,并将业务数据返回给表现层作组织表现,该系统的MVC框架采用Struts。
Service层(就是业务逻辑层),负责实现业务逻辑。业务逻辑层以DAO层为基础,通过对DAO组件的正面模式包装,完成系统所要求的业务逻辑。
DAO层,负责与持久化对象交互。该层封装了数据的增、删、查、改的操作。
PO,持久化对象。通过实体关系映射工具将关系型数据库的数据映射成对象,很方便地实现以面向对象方式操作数据库,该系统采用Hibernate作为ORM框架。

Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。
一个良好的框架可以让开发人员减轻重新建立解决复杂问题方案的负担和精力;它可以被扩展以进行内部的定制化;并且有强大的用户社区来支持它。框架通常能很好的解决一个问题。然而,你的应用是分层的,可能每一个层都需要各自的框架。仅仅解决UI问题并不意味着你能够很好的将业务逻辑和持久性逻辑和UI 组件很好的耦合。

不可否认,对于简单的应用,采用ASP或者PHP的开发效率比采用J2EE框架的开发效率要高。甚至有人会觉得:这种分层的结构,比一般采用JSP + Servlet的系统开发效率还要低。

笔者从以下几个角度来阐述这个问题。
1开发效率:软件工程是个特殊的行业,不同于传统的工业,例如电器、建筑及汽车等行业。这些行业的产品一旦开发出来,交付用户使用后将很少需要后续的维护。但软件行业不同,软件产品的后期运行维护是个巨大的工程,单纯从前期开发时间上考虑其开发效率是不理智的,也是不公平的。众所周知,对于传统的ASP和 PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP或PHP页面里,从而导致页面的可读性相当差,可维护性非常低。即使需要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险。但采用严格分层J2EE架构,则可完全避免这个问题。对表现层的修改即使发生错误,也绝对不会将错误扩展到业务逻辑层,更不会影响持久层。因此,采用J2EE分层架构,即使前期的开发效率稍微低一点,但也是值得的。

2需求的变更:以笔者多年的开发经验来看,很少有软件产品的需求从一开始就完全是固定的。客户对软件需求,是随着软件开发过程的深入,不断明晰起来的。因此,常常遇到软件开发到一定程度时,由于客户对软件需求发生了变化,使得软件的实现不得不随之改变。当软件实现需要改变时,是否可以尽可能多地保留软件的部分,尽可能少地改变软件的实现,从而满足客户需求的变更?答案是——采用优秀的解耦架构。这种架构就是J2EE的分层架构,在优秀的分层架构里,控制层依赖于业务逻辑层,但绝不与任何具体的业务逻辑组件耦合,只与接口耦合;同样,业务逻辑层依赖于DAO层,也不会与任何具体的DAO组件耦合,而是面向接口编程。采用这种方式的软件实现,即使软件的部分发生改变,其他部分也尽可能不要改变。
注意:即使在传统的硬件行业,也有大量的接口规范。例如PCI接口、显卡或者网卡,只要其遵守PCI的规范,就可以插入主板,与主板通信。至于这块卡内部的实现,不是主板所关心的,这也正是面向接口编程的好处。假如需要提高电脑的性能,需要更新显卡,只要更换另一块PCI接口的显卡,而不是将整台电脑抛弃。如果一台电脑不是采用各种接口组合在一起,而是做成整块,那将意味着即使只需要更新网卡,也要放弃整台电脑。同样,对于软件中的一个个组件,当一个组件需要重构时,尽量不会影响到其他组件。实际上,这是最理想的情况,即使采用目前最优秀的架构,也会有或多或少的影响,这也是软件工程需要努力提高的地方。
技术的更新,系统重构:软件行业的技术更新很快,虽然软件行业的发展不快,但小范围的技术更新特别快。一旦由于客观环境的变化,不得不更换技术时,如何保证系统的改变最小呢?答案还是选择优秀的架构。
在传统的Model 1的程序结构中,只要有一点小的需求发生改变,将意味着放弃整个页面。或者改写。虽然前期的开发速度快,除非可以保证以后永远不会改变应用的结构,否则不要采用Model 1的结构。

采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。
DAO模式需要为每个DAO组件编写DAO接口,同时至少提供一个实现类,根据不同需要,可能有多个实现类。用Spring容器代替DAO工厂
通常情况下,引入接口就不可避免需要引入工厂来负责DAO组件的生成。Spring实现了两种基本模式:单态模式和工厂模式。而使用Spring可以完全避免使用工厂模式,因为Spring就是个功能非常强大的工厂。因此,完全可以让Spring充当DAO工厂。
由Spring充当DAO工厂时,无须程序员自己实现工厂模式,只需要将DAO组件配置在Spring容器中,由ApplicationContext负责管理DAO组件的创建即可。借助于Spring提供的依赖注入,其他组件甚至不用访问工厂,一样可以直接使用DAO实例。
分享到:
评论

相关推荐

    ssh分层项目聚合demo版

    将ssh工程拆分为多个模块开发。一个父工程maven project(pom),然后在创建四个子模块(maven moudule),其中四个子模块,分别为 domain、dao、service、web,也就是将四层的内容分别独立为一个项目,进一步将耦合性...

    SSH集成开发宝典

    Spring是一个开放源代码的设计层面框架,他解决的是业务逻辑层...Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架。

    ssh开发最简单的注解版增删改查,数据库在里面,分层清晰,供大家学习用

    该web项目使用ssh注解实现了基本简单的增删改查,数据库在里面,分层清晰,供大家学习用.rar

    基于SSH2开发的水果店管理系统

    这个项目是来源于课程设计,前端做的不太好,缺乏美工,但是后台是基于SSH2的标准开发风格,包结构比较规范,分层清晰,业务逻辑比较单一,容易理解,适用于初学者开发学习。

    java大作业基于SSH框架的学生成绩管理系统源码.zip

    java基于SSH框架的学生成绩管理系统源码。要求: (1) 整合Struts2、Spring和Hibernate框架 (2) 实现“登录”功能 (3) 实现“学生信息管理”功能 (4) 实现“学生成绩管理”功能 (5) 实现分页功能 目的...

    SSH相关整合的总要资料

    框架的主要优势之一就是其分层架构,分层架构允许您选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。 它提供了对ORM工具(Hibernate,JDO,TopLink,apacheOJB,iBatis,JPA)、视图(JSP,JSTL,Title,Velocity...

    毕业设计:基于SSH的汽车租赁管理系统

    系统以实际运用为开发背景,采用JSP技术,JAVA开发语言,基于SSH架构开发,同时系统采用MYSQL数据库,充分保证系统的稳定性。系统设计按标准化、规范化,分层设计,构件化实现。实现了管理员对租车相关信息的查询、...

    基于SSH电子商城系统

    项目主要应分层架构思想,通过J2EE轻量级框架SSH与前台Ajax技术来相结合来实现。在设计种过中全方位的应用软件工程的开发思想,对项目进行UML建模包括各模块的类图、时序图等。因为系统是基于B/S结构,所以适应范围...

    ssh实现的酒店预订系统

    该系统以Linux操作系统为核心,J2EE设计模式,MVC分层处理。主要功能:后台管理员进行订单管理、用户管理、客房管理等操作;前台用户进行个人信息维护、个人订单预定、个人订单修改、个人订单删除等操作。

    ssh火车票管理系统毕业设计程序

    整个开发过程首先对系统进行需求分析,得出系统的主要功能。接着对系统进行总体设计和详细设计。总体设计主要包括系统功能设计、系统总体结构设计、系统数据结构设计和系统安全设计等;详细设计主要包括系统数据库...

    Java_EE企业应用实战SSH(第三版)-part3

    1.1.1JavaEE应用的分层模型 1.1.2JavaEE应用的组件 1.1.3JavaEE应用结构和优势 1.1.4常用的JavaEE服务器 1.2轻量级JavaEE应用相关技术 1.2.1JSP、Servlet3.0和JavaBean及替代技术 1.2.2Struts2.2及替代技术 ...

    javaWeb SSH进销存管理系统源代码

    JAVA进销存系统,内含用户管理,系统管理,商品管理,客户/供应商管理,出入库管理,库存管理,系统功能完整,无BUG,界面洁简美观. 开发技术:java + SSH+Ext + mysql 进销存业务功能完整,代码结构分层清晰。

    SSH框架的项目

    开发的一个由SSH2流行组合框架的一个小的管理系统,代码清晰明了,分层清晰、适合初学者,适合打算做项目的、实现了多次的增删查改,很不错的一个参考例子

    利用JBoss Seam框架开发高校毕业生论文选题系统

    不能及时了解整体进展等问题,而采用常用的J2EE框架(如SSH)开发的论文选题系统要求开发人员了解各框架的组件管 理APIs,开发过程中还需编写大量衔接配置代码,影响了开发效率。文章介绍几种常用J2F_~框架及其特点。...

    基于jsp酒店管理系统ssh+mysql源码

    本系统是为某某连锁酒店设计开发的连锁酒店管理系统,来研究基于B/S模式的网上信息管理的实现,采用的是SSH+MYSQL模式的电子管理平台。酒店作为一个商务旅游集散点,客户及相关信息繁多,涉及很多的信息数据的管理,...

    JBOA办公管理系统最新版SSH框架

    JBOA办公管理系统最新版采用SSH框架,开发系统win10,开发工具为IDEA2018.1,采用maven jar包管理,项目分层清晰,包与包之间关系清晰,配置文件易懂。现在还附赠配套oracle数据库sql文件一个。保证将数据库导入后,...

    基于jsp连锁酒店管理系统ssh+mysql源码.zip

    本系统是为某某连锁酒店设计开发的连锁酒店管理系统,来研究基于B/S模式的网上信息管理的实现,采用的是SSH+MYSQL模式的电子管理平台。酒店作为一个商务旅游集散点,客户及相关信息繁多,涉及很多的信息数据的管理,...

    ssh 文档 spring

    框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于...

    毕业设计-基于JSP的连锁酒店管理系统ssh+mysql-设计与实现(源码+论文+视频).zip

    本系统是为某某连锁酒店设计开发的连锁酒店管理系统,来研究基于B/S模式的网上信息管理的实现,采用的是SSH+MYSQL模式的电子管理平台。酒店作为一个商务旅游集散点,客户及相关信息繁多,涉及很多的信息数据的管理,...

    Spring.net实战开发

    Spring.NET+NHibnerte+ASP.NET MVC4的组合等同于J2EE下大名鼎鼎的SSH框架技术,是.NET下的企业级Web应用开发开源框架。 Spring.NET Spring.Core 库是框架的基础, 提供依赖注入功能。Spring NET中大多数类库依赖或...

Global site tag (gtag.js) - Google Analytics