SSH开发优缺点
- 格式:doc
- 大小:31.00 KB
- 文档页数:2
一、Struts优点
1.struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web
应用程序的开发,结构清晰,使开发者只关于业务逻辑的实现。
2.属于开源软件,具有Taglib和页面导航的优势。
Taglib是struts的标记库,灵活动用,
能大大的提高开发效率;页面导航,使系统的脉络更加清晰,通过一个配置文件即可把握整个系统的各部分之间的联系,对于后期的维护有很大的优势,尤其对于另一批新开发者接手整个项目更能突显。
3.提供Exception处理机制。
4.数据库连接池管理。
5.支持I18N。
缺点:转到展示层时,需要配置forward,每一次转到展示层。
须得重新启动服务器,可能对程序员的操作有些繁琐。
Struts的Action必须是thread-safe方式,它仅仅允许一个实例去处理所有请求,可能会引起线程安全问题。
测试有点不方便,Struts的每个Action都同Web层耦合在一起,不过有一个Junit的扩展工具Struts TestCase可以实现它。
类型转换,Struts的FormBean把所有的数据都作为String类型,它可以通过工具Commnos-Beanutils进行类型转换,但它的转换都是在Class级别,而转换的类型是不可配置的。
对Servlet的依赖性过强,Struts处理Action时必须要依赖ServletRequest和ServletResponse.,对Action的执行控制有点困难。
Action执行前和后的处理,Struts处理Action的时候是基于class的Hibernate,很难再Action 的前和后进行操作。
二、Hibernate优点
1.hibernate使用java反射机制而不是字节码增强程序来实现透明性。
2.hibernate性能非常好,因为它是个轻量级额度框架,映射的灵活性很出色。
3.它支持各种关系数据库,从一对一到多对多的各种复杂关系。
缺点:它限制您所使用的对象模型。
(例如,一个持久性类不能映射到多个表)其独有的界面和可怜的市场份额也让人不安,尽管如此,Hibernate 还是以其强大的发展动力减轻了这些风险。
其他的开源持久性框架也有一些,不过都没有Hibernate 这样有市场冲击力。
一、Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架,和App Server,和EJB没有什么必然的联系。
Hibernate可以用在任何JDBC可以使用的场合,例如Java
应用程序的数据库访问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。
从这个意义上来说,Hibernate和EB不是一个范畴的东西,也不存在非此即彼的关系。
二、Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC驱动,和数据库都有一定的关系,但是和使用它的Java程序,和App Server没有任何关系,也不存在兼容性问题。
三、Hibernate不能用来直接和Entity Bean做对比,只有放在整个J2EE项目的框架中才能比较。
并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC的替代者出现的,而不是Entity Bean的替代者出现的,让我再列一次我已经列n次的框架结构:
传统的架构:
1) Session Bean <-> Entity Bean <-> DB
为了解决性能障碍的替代架构:
2) Session Bean <-> DAO <-> JDBC <-> DB
使用Hibernate来提高上面架构的开发效率的架构:
3) Session Bean <-> DAO <-> Hibernate <-> DB
就上面3个架构来分析:
1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构3次之,EB的架构1最差。
2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高,但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch语句,调整PreapredStatement的Batch Size和Fetch Size等参数,以及在必要的情况下采用结果集cache 等等。
而一般情况下程序员是做不到这一点的。
因此Hibernate架构表现出最快的运行效率。
EB的架构效率会差的很远。
3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高,JDBC次之,Hibernate最差。
但是在大的项目,特别是持久层关系映射很复杂的情况下,Hibernate效
率高的惊人,JDBC次之,而EB架构很可能会失败。
4、分布式,安全检查,集群,负载均衡的支持
由于有SB做为Facade,3个架构没有区别。
三、Spring优点
1.Spring是基于IOC(反向控制)和AOP的构架多层j2ee系统的框架,能够有效的组织
你的中间层对象,不管你是否选择使用了EJB,如果你仅使用了Struts或其他J2EE的API特制的framework,spring致力于解决剩下的问题。
2.Spring能够消除在许多工作成常见的对Singleton的过多使用,它降低了程序的可测试性
和面向对象的程度。
3.通过一种在不同应用程序和项目间一致的方法来出来配置文件,Spring能消除各种各样
自定义格式的属性文件的需要。
4.通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进养成好的编
程习惯。
5.Spring被设计为让使用它创建的应用尽可能少的依赖于她的APIs,在Spring的应用的
大多数业务对象没有依赖Spring。
6.使用Spring构建的应用程序易于单元测试。
7.Spring帮助你解决很多问题而无需使用EJB,Spring能提供一种EJB的替换物,他们适
用于很多web开发。
8.Spring为数据存取提供了一个一致的框架,而不是适用的JDBC还是O/R mapping
(hibernate),使你能够通过最简单可行的解决方法来解决你的问题。
缺点:使用人数不多、jsp中要写很多代码、控制器过于灵活,缺少一个公用控制器。
总结:在目前的市场上,SSH是一个比较流行的MVC框架,开源且比较稳定。
易于管理和测试。
也适用于需求频繁变更的项目。