Struts2,Spring,Hibernate框架的优缺点程序员
分类: SSH框架整合 2010-05-26 21:27 5432人阅读 评论(0) 收藏 举报spring
strutsspringhibernate框架daomvc数据库
开源是3个框架共有的优势编程
Struts2框架(MVC框架)的优势以下:安全
1) 实现了MVC模式,层次结构清晰,使程序员只需关注业务逻辑的实现;架构
2) 丰富的标签库,大大提升了开发的效率;mvc
3) Struts2提供丰富的拦截器实现框架
3) 经过配置文件,就能够掌握整个系统各个部分之间的关系;工具
4) 异常处理机制,只需在配置文件中配置异常的映射,便可对异常作相应的处理;性能
Spring框架的优势以下:
1) 无入侵性(在业务逻辑代码中感受不到Spring框架的存在);
2) 各个组件之间的耦合极为松散;
3) 无需程序员本身实现singleton模式;
4) 经过AOP,能够实现事务管理和日志管理;
5) 整合其余的框架,如:struts框架和hibernate框架;
Hibernate框架(ORM框架)的优势以下:
1) 对象/关系数据库映射(ORM), 使用时只需操纵对象,使开发更加面向对象化;
2) 无入侵性;
3) 简洁的HQL语句,减小了JDBC与SQL操做数据库的代码量;
4) 移植性好;
缺点以下:
1) 对批量更新,删除的支持很差;
什么是SSH2框架。好处在哪里?
SSH2框架:
具体来讲应该是:struts2.0+spring3.2+hirbnate2.5
典型的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的系统开发效率还要低。
笔者从一下几个角度来阐述这个问题。
— 开发效率:软件工程是个特殊的行业,不一样于传统的工业,例如电器、建筑及汽车等行业。这些行业的产品一旦开发出来,交付用户使用后将不多须要后续的维护。但软件行业不一样,软件产品的后期运行维护是个巨大的工程,单纯从前期开发时间上考虑其开发效率是不理智的,也是不公平的。众所周知,对于传统的ASP和 PHP等脚本站点技术,将整个站点的业务逻辑和表现逻辑都混杂在ASP或PHP页面里,从而致使页面的可读性至关差,可维护性很是低。即便须要简单改变页面的按钮,也不得不打开页面文件,冒着破坏系统的风险。但采用严格分层J2EE架构,则可彻底避免这个问题。对表现层的修改即便发生错误,也绝对不会将错误扩展到业务逻辑层,更不会影响持久层。所以,采用J2EE分层架构,即便前期的开发效率稍微低一点,但也是值得的。
— 需求的变动:以笔者多年的开发经验来看,不多有软件产品的需求从一开始就彻底是固定的。客户对软件需求,是随着软件开发过程的深刻,不断明晰起来的。所以,经常遇到软件开发到必定程度时,因为客户对软件需求发生了变化,使得软件的实现不得不随之改变。当软件实现须要改变时,是否能够尽量多地保留软件的部分,尽量少地改变软件的实现,从而知足客户需求的变动?答案是——采用优秀的解耦架构。这种架构就是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实例。
优势:
Struts跟Tomcat、Turbine等诸多Apache项目同样,是开源软件,这是它的一大优势。使开发者能更深刻的了解其内部实现机制。
除此以外,Struts的优势主要集中体如今两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提升开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的经常使用标记外,不多开发本身的标记,或许Struts是一个很好的起点。
关于页面导航,我认为那将是从此的一个发展方向,事实上,这样作,使系统的脉络更加清晰。经过一个配置文件,便可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤为是当另外一批开发者接手这个项目时,这种优点体现得更加明显。
缺点:
Taglib是Struts的一大优点,但对于初学者而言,却须要一个持续学习的过程,甚至还会打乱你网页编写的习惯,可是,当你习惯了它时,你会以为它真的很棒。
Struts将MVC的Controller一分为三,在得到结构更加清晰的同时,也增长了系统的复杂度。
Struts从产生到如今还不到半年,但已逐步愈来愈多运用于商业软件。虽然它如今还有很多缺点,但它是一种很是优秀的J2EE MVC实现方式,若是你的系统准备采用J2EE MVC架构,那么,不妨考虑一下Struts。
SSH2相比SSH1的不一样就是前者使用了更方便、更安全的MVC框架Struts2.。。
SSH2的主要内容包括:Struts二、Hibernate、Spring
Struts2是优秀的MVC框架。。。
Hibernate是如今最好用的ORM框架。。。
Spring是如今使用最广泛的Ioc容器。。。用来处理业务逻辑。