一,基本概念:Spring/Struts/Hibernate 是干嘛用的?
首先应该了解这三个框架是做什么的,在开发中具有什么样的作用,为什么要用,对于理清楚框架中的具体知识点是有大裨益的。
1,Spring: DI / AOP
Spring 对应的关键词是DI(依赖注入) 与 AOP (面向切面编程), 可以认为是一个以DI 和 AOP 为核心 Java Web 一站式的集成 (粘合)框架;
其中DI 也称为 IOC(控制反转) 用于管理 Java对象之间的依赖关系,AOP 用于解耦业务代码和公共服务代码(如日志,安全,事务等)。DI 和 AOP 能让代码更加简单,具有良好的松耦合特性和可测试性,极大的简化开发, 理解这两者是使用Spring 框架的基础。
Spring框架对企业应用开发中的各类通用为题都进行了良好的抽象,因此也能够把应用各个层次所涉及的特定的功能和开发框架(如:MVC框架,ORM框架)方便的组合在一起(这样得益于依赖注入和面向切面编程带来的强大功能)。 Spring是一个极其优秀的一站式的Full-Stack集成框架,因此基于Spring核心,对Java应用开发中的各类通用问题几乎都提供了针对性的框架(比如: Spring MVC, Spring Data)
Java曾经有另外一个类似的一站式框架粘合框架Seam, 核心是基于依赖注入来粘合JSF 和 EJB, 不过退出时 Spring 已经大杀四方, Seam基本已经退出历史舞台,Seam 提过一个很不错的概念 :“双向注入” , 类似在前端框架中的双向绑定, 当时来说还是很超前的。
2,Strus: MVC
Struts 是一个 Java Web MVC开发框架。
- 模型Model用于封装与业务逻辑相关的数据和数据处理方法;
- 视图View是数据的 HTML 展现;
- 控制器Controller 负责相应请求,协调Model 和 VIew;
Model,View 和 Controller 的分开, 是一种典型的关注点分离的思想,不仅使得代码复用性和组织性更好,还使得 Web应用的配置性 和 灵活性更好;
MVC开发模式下,Java Web 开发会遇到URL 路由, 模板渲染, 表单绑定/ 提交/ 验证, Session 封装, 权限验证, 国际化等一系列通用的问题, 而MVC 框架会将这些通用问题封装进框架中,在应用中根据自己的场景进行简单的配置和编码即可,MVC框架就会帮助处理好一切,可以极大的简化代码; (“不要调用我,我会调用你。再扯远一点,这其实就是依赖注入(DI) / 控制反转(IoC)概念的最初来源, 去看见 Martin Fowler 的博客就知道了");
3,Hibernate: ORM
Hibernate是一个Java ORM开发框架;ORM是Object Relation Mapping的缩写,顾名思义,即: 对象关系映射;
ORM是一种以面向对象的方式来进行数据库操作的技术。Web开发中常用的语言,都会有对应的ORM框架。而Hibernate就是Java开发中的一种常用ORM框架,另一个现在流行的ORM框架就是Mybatis;
为什么需要ORM框架?
简单的理解:通过Java进行数据库访问的正常流程可以分为以下几步:
1,准备好SQL语句;
2,调用JDBC的API传入SQL语句,设置参数;
3,解析JDBC返回的结果;
这个过程实际上非常繁琐, 比如:
1,在Java代码中拼接SQL非常麻烦,而且容易出错;
2,JDBC的代码调用有很多重复性的代码;
3,从JDBC返回的结果转换成领域模型的Java对象很繁琐;
而且使用ORM框架,则可以让我们用面向对象的方式来操作数据库,比如通过一个简单的函数调用就可以完成上面整个流程,直接返回映射为Java对象的结果。这个流程中很大一部分工作其实可以交给ORM自动化的帮我们执行。对,类似MVC框架,ORM框架会帮我们处理好相关的繁琐事情;