SSH框架优缺点

Struts优缺点 

 

优点: 

1.开源软件,能更深入的了解其内部实现机制。 

2.Taglib标记库,灵活动用,能大大提高开发效率。 

3.页面导航使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统 

各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者 

接手这个项目时,这种优势体现得更加明显。 

4.提供Exception处理机制. 

5.数据库链接池管理 

6.Struts的Action必需是thread-safe方式,它仅仅允许一个实例去处理所 

有的请求。所以action用到的所有的资源都必需统一同步,这个就引起了线程安 

全的问题。 

缺点: 

Taglib是Struts的一大优势,但对于初学者而言,却需要一个持续学习的过程, 

甚至还会打乱你网页编写的习惯,但是,当你习惯了它时,你会觉得它真的很棒。 

Struts将MVC的Controller一分为三,在获得结构更加清晰的同时,也增加了系 

统的复杂度。 

ActionForms使用不便、无法进行单元测试(StrutsTestCase只能用于集成) 

 

Spring的原理和优点 

Spring真正的精华是它的Ioc模式实现的BeanFactory和AOP,它自己在这 

个基础上延伸的功能有些画蛇添足。 

Ioc模式是什么 

可伸缩性和重/轻量,谁是实用系统的架构主选? 

Spring 

它是一个开源的项目,而且目前非常活跃;它基于IoC(InversionofControl,反 

向控制)和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层中 

必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某 

一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的接口, 

采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现 

TranscationManagment,等等 

优点 

a.Spring能有效地组织你的中间层对象,不管你是否选择使用了EJB。如果你仅 

仅使用了Struts或其他为J2EE的API特制的framework,Spring致力于解决剩 

下的问题。 

b.Spring能消除在许多工程中常见的对Singleton的过多使用。根据我的经验, 

这是一个很大的问题,它降低了系统的可测试性和面向对象的程度。 

c. 通过一种在不同应用程序和项目间一致的方法来处理配置文件,Spring能消 

除各种各样自定义格式的属性文件的需要。曾经对某个类要寻找的是哪个魔法般 

的属性项或系统属性感到不解,为此不得不去读Javadoc甚至源编码?有了 

Spring,你仅仅需要看看类的JavaBean属性。InversionofControl的使用(在下 

面讨论)帮助完成了这种简化。 

d.?通过把对接口编程而不是对类编程的代价几乎减少到没有,Spring能够促进 

养成好的编程习惯。 

e.Spring被设计为让使用它创建的应用尽可能少的依赖于他的APIs。在Spring 

应用中的大多数业务对象没有依赖于Spring。 

f. 使用Spring构建的应用程序易于单元测试。 

g.Spring能使EJB的使用成为一个实现选择,而不是应用架构的必然选择。你能 

选择用POJOs或localEJBs来实现业务接口,却不会影响调用代码。 

h.Spring帮助你解决许多问题而无需使用EJB。Spring能提供一种EJB的替换物, 

它们适用于许多web应用。例如,Spring能使用AOP提供声明性事务管理而不 

通过EJB容器,如果你仅仅需要与单个数据库打交道,甚至不需要一个JTA实 

现。 

i. Spring为数据存取提供了一个一致的框架,不论是使用的是JDBC还是O/R 

mapping产品(如Hibernate)。 

Spring确实使你能通过最简单可行的解决办法来解决你的问题。而这是有有很大 

价值的。 

缺点: 

使用人数不多、jsp中要写很多代码、控制器过于灵活,缺少一个公用控 制器 

 

 

Hibernate 

 

优点: 

Hibernate是JDBC的轻量级的对象封装,它是一个独立的对象持久层框架。 

Hibernate可以用在任何JDBC可以使用的场合,例如Java应用程序的数据库访 

问代码,DAO接口的实现类,甚至可以是BMP里面的访问数据库的代码。 

Hibernate是一个和JDBC密切关联的框架,所以Hibernate的兼容性和JDBC 

驱动,和数据库都有一定的关系,但是和使用它的Java程序,和AppServer没 

有任何关系,也不存在兼容性问题。 

Hibernate不能用来直接和EntityBean做对比,只有放在整个J2EE项目的框 

架中才能比较。并且即使是放在软件整体框架中来看,Hibernate也是做为JDBC 

的替代者出现的,而不是EntityBean的替代者出现的, 

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常 

轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵 

数据库。 

Hibernate可以应用在任何使用JDBC的场合。 

 

Hibernate使用Java 反射机制而不是字节码增强程序来实现透明性。 

 

Hibernate的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。 

 

它支持各种关系数据库,从一对一到多对多的各种复杂关系。 

缺点: 

它限制您所使用的对象模型。(例如,一个持久性类不能映射到多个表)。 

让我再列一次我已经列n次的框架结构: 

传统的架构: 

1)SessionBean<->EntityBean<->DB 

为了解决性能障碍的替代架构: 

2)SessionBean<->DAO<->JDBC<->DB 

使用Hibernate来提高上面架构的开发效率的架构: 

3)SessionBean<->DAO<->Hibernate<->DB 

就上面3个架构来分析: 

1、内存消耗:采用JDBC的架构2无疑是最省内存的,Hibernate的架构次之,EB 

的架构1最差。 

2、运行效率:如果JDBC的代码写的非常优化,那么JDBC架构运行效率最高, 

但是实际项目中,这一点几乎做不到,这需要程序员非常精通JDBC,运用Batch 

语句,调整PreapredStatement的BatchSize和FetchSize等参数,以及在必要的 

情况下采用结果集cache等等。而一般情况下程序员是做不到这一点的。因此 

Hibernate架构表现出最快的运行效率。EB的架构效率会差的很远。 

3、开发效率:在有JBuilder的支持下以及简单的项目,EB架构开发效率最高, 

JDBC次之,Hibernate最差。但是在大的项目,特别是持久层关系映射很复杂的 

情况下,Hibernate效率高的惊人,JDBC次之,而EB架构很可能会失败。 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值