- 概述
- Struts
- Spring MVC
- Spring
- Hibernate
- Mybatis
概述
记录下Java五大框架(Struts,Spring,Hibernate,Spring MVC,Mybatis)的学习笔记
五大框架:
MVC模式框架 控制层框架 数据持久层框架
Struts Spring Hibernate(重量级) SSH开发模式
SpringMVC MyBatis(轻量级) SSM开发模式
Struts
- 基于MVC设计模式的框架,每次请求都是一个类级别Action,都是一个Servlet
- 控制器类继承 com.opensymphony.xwork2.ActionSupport 类重写execute() 方法,请求到对应Action类时,前台属性会注入到Action类的成员属性中,对应成员属性的值,在jsp页面也可以使用Struts的标签库访问到
- web.xml文件中配置 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
拦截了所有的项目中的请求,进行对客户不同的请求行为的分发,分发给不同的控制器(action javabean),返回装饰页面
Spring MVC
- 基于MVC设计模式的框架,类属Spring系列,可以很好的融合Spirng框架,不同于Struts每个类对应一个请求,它是方法级别的对应每个请求,更好的实现了 Resultful 风格
- Spring MVC只有一个Servlet作为整个项目的请求的分发器,找到对应请求的类,方法对应的地址
- 强大的前台视图解析器:framework,更好的处理青苔数据
- 每个请求对应的方法,都可以设置注解,可以配置对应请求的多个地址信息,限定请求方式,请求的编码等,做更多样化处理。同时还可以根据注解配置,支持json数据自动传输,和接收json数据格式
Spring
- Sping是一个轻量级的DI和AOP容器框架,DI:称作依赖注入(Dependency Injection),和控制反转一个概念,具体的讲,当一个角色需要另外一个角色协助的时候,在传统的程序设计中,通常有调用者来创建被调用者的实例。但是在spring中创建被调用者将不再有调用者完成,因此叫控制反转。创建被调用对象有Spring来完成,在容器实例化对象的时候主动的将被调用者(或者说它的依赖对象)注入给调用对象,因此又叫依赖注入。
- AOP:Spring对面向切面编程提供了强有力的支持,通过它让我们将业务逻辑从应用服务(如事务管理)中分离出来,实现了高内聚开发,应用对象只关注业务逻辑,不再负责其它系统问题(如日志、事务等)。Spring支持用户自定义切面。
- 容器:Spring是个容器,因为它包含并且管理应用对象的生命周期和配置。如对象的创建、销毁、回调等。
- 框架:Spring作为一个框架,提供了一些基础功能,(如事务管理,持久层集成等),使开发人员更专注于开发应用逻辑。
Hibernate
- Hibernate功能强大,数据库无关性好,O/R映射能力强, Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行
- Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用 好Hibernate方面需要你的经验和能力都很强才行,但是Hibernate现在已经是主流O/R Mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于Mybatis
- Hibernate 缓存机制:一级缓存 Session级别缓存 ,二级缓存 SessionFactory级别缓存
Mybatis
- Mybatis入门简单, 即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美
- 简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据 库修改。当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合。系统数据处理量巨大,性能要求极为 苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。