Struts

 

           优点:
                    1、首先他是开源的,使开发者可以更深了解他的原理和内部实现机制;
                    2、 可扩展性 采用MVC模式分离业务逻辑层 显示层 模型层 低耦合,结构清晰,使开发者专注于业务逻辑

                    3、 还有丰富的标签库供使用

                    4、支持国际化

                    5、还有很高的重用性

 

 

           缺点:  Struts将MVC中的控制层 一分为三 在获得结构更加清晰的同时,也增加了系统的复杂度

                    ActionForms使用不便、无法进行单元测试

                   对servlet依赖性过强,struts在处理action时 必须要依赖 httprequest和 HttpResponse 对象

 

 

Hibernate



          优点:
                    1、他是数据库连接的中间件,而且对程序的依赖性很小 
                    2、 透明性  使用了java的反射机制

                    3、 轻量级  他对jdbc进行了轻量级的封装  而且可以在程序中取代EJB的cmp,完成持久化

                    4、性能很好,而且还是轻量级 很灵活

                    5、他支持多种数据库 的 1对多的复杂关系

                    6、可以完全使用面向对象的思想去编程

                    7、使用了JTA  JDBC 和  JNDI技术

         缺点:一个持久化类不能映射多个表

                 相对内存消耗JDBC是最省内存的,hibernate次之  ejb Bean 最差

 

 

Spring


 

         优点:
                    1、spring  是基于ioc(控制反转)和aop(面向切面编程) 的框架

                          而且封装了所有的事务,不需要程序员自己去提交事务,一切都由web容器去控制,省去了很多代码

                    2、spring采用了单态工厂模式       采用mvc模式下的java程序 尽管已经把层与层之间的关系耦合度低,但还是有联系,这时候使用spring 把所有bean都交由web容器去控制 创建和销毁,这样才真正的降低了耦合度, 而且bean的创建的生命周期都在web容器里控制,而且他从工厂里实例的bean都是单态 的,当然可以加一个属性让他不是单态

                    3、面向接口编程,只需要知道要实现的接口就可以,不需要知道他的具体实现

                    4、使用spring框架有利于单元测试