01 前言
Java 框架一直以来都是面试必备的知识点, 而掌握 Java 框架, 不管在成熟的大公司, 快速发展的公司, 还是创业阶段的公司, 都能对当前正在开发中的系统有整体的认知, 从而更好的熟悉和学习技术, 这篇文章胖达就打算给大家介绍几款现阶段流行的框架组合, 不管是在传统企业开发还是在互联网开发领域, 这几种框架应该都是比较常用的.
02 三层架构
说到框架首先需要明确的是, 在 web 开发领域一般会将架构分为三个部分: 表示层, 持久层, 业务层, 之所以将整体架构分为三个层面, 主要目的是让整个系统更具有条理性, 通过分配任务的方式进行系统的解耦, 让每一层只关心自己内部的事情, 只知道下层的存在, 不知道上层的存在. 达到局部改变而不影响全局的目的, 就比如餐馆中有服务员, 厨师, 收银员一样, 各司其职, 让系统有条不紊的运行下去. 三层架构如下图所示(图中的数据访问层就是文中的持久层):
下面就简单介绍一下三层架构:
1. 表示层
表示层其实就是用户能够看到的界面显示层, 但是它的职责并不仅仅是显示界面那么简单, 而是需要完成三件事情:
从界面中取得数据跟后台服务器交互
跟后台交互后进行数据绑定
将绑定的数据呈现在页面中
一般来说, 这一层的设计会采用 MVC 的模式, M 称为模型也就是实体类, 用于数据的封装和数据的传输; V 也就是页面组件, 用于数据的展示; C 为控制也就是流程事件, 用于流程的控制.
2. 业务层
这一层的功能主要是实现一些具体问题的操作, 因为它是表示层和持久层之间沟通的桥梁, 主要负责数据的传递和处理.
在日常的代码开发中一般对应着逻辑 Service 层, 对于一些复杂的逻辑判断和涉及到数据库的数据验证都需要在这一层做出处理, 同时根据传入的值返回用户想得到的值, 或者处理相关的操作.
3. 持久层
也称为数据访问层, 顾名思义, 这一层其实就是跟数据库直接打交道的层面, 通过连接数据库, 根据传入的值对数据库进行增删改查.
03 框架组合
针对上面架构的每一个层面, 目前 Web 开发领域内都有一些优秀的框架, 例如表示层有 Structs2,SpringMVC 等, 持久层有 Hibernate,Mybatis 等, 还有业务层有 Spring 框架, 但是严格来说, Spring 是一个整合框架, 业务层面在每一个公司每一个项目都会根据自己的需求做不同的处理. 在项目的开发中, 有这样几种使用非常广泛的框架组合:
1.SSH 框架组合
SSH 框架组合主要包括 Struts ,Spring,Hibernate 三大框架, 用 Struts 作为系统的整体基础架构, 负责 MVC 的分离, 在 Struts 框架的模型部分, 控制业务跳转, 利用 Hibernate 框架对持久层提供支持, 同时用 Spring 来管理 Struts 和 Hibernate, 框架具体解释如下:
Struts 框架
Struts 框架是一个基于 MVC 设计模式的 Web 应用框架, 它本质上相当于一个 Servlet, 在 MVC 设计模式中, Struts2 作为控制器 (Controller) 来建立模型与视图的数据交互.
它包含 Struts1 和 Struts2 两个版本, 两者的相差其实还是挺大的, Struts2 并不是对 Struts1 的更新, 而是充分发挥了 Struts1 和 WebWork 这两种技术的优势, 它抛弃了原来 Struts1 的缺点, 使得 Web 开发变得更加容易.
Spring 框架
学习基础的时候大家应该都知道, 最传统的 Java Web 应用程序是采用 JSP,Servlet,Javabean 来实现的, 这种模式实现了最基本的 MVC 分层, 使得程序结构有负责前台展示的 JSP, 负责流程逻辑控制的 Servlet 以及负责数据封装的 Javabean, 但是这种结构存在问题如 JSP 页面中需要使用符号嵌入很多的 Java 代码, 造成页面结构混乱, Servlet 和 Javabean 负责了大量的跳转和运算工作, 耦合紧密, 程序复用度低等.
Spring 框架的出现就解决了这个问题, 通过 AOP 和 IoC 两大特性的加持, 把所有类之间的这种依赖关系完全通过配置文件的方式替代了, 同时将实体 bean 很好的管理到了容器中, 使得耦合性大大降低, 复用性大大提高.
Hibernate 框架
传统的持久层框架都是采用 Java JDBC 的连接方式进行数据库的访问和操作, 需要人为的编写大量的 SQL 或者代码, 同时还需要将获得的数据进行转换或封装后往外传, 其实对于大项目而言这是一个非常烦琐的过程.
Hibernate 框架是一个半自动化的持久层框架, 可以减少大量的 SQL, 代码编写工作, 省掉很大部分的工作量, 在这个框架中, 当我们需要相关操作时, 不用再关注数据库表也不用再去一行行的查询数据库, 只需要通过持久化一个类的方式就可以完成增删改查的功能, 因为框架的内部已经实现了很多对数据库的操作方法, 我们只需要调用即可, 做的最多的工作都在持久化类上.
2.SSM 框架组合
另外一个比较流行的框架组合是 SSM 框架, 主要包括 SpringMVC,Spring,Mybatis 三大框架, 用 SpringMVC 作为整体基础框架, 分离 MVC 层级, Mybatis 作为跟数据库交互的持久层框架, 负责数据的访问和操作, 而 Spring 依然作为其余两大框架的桥梁, 进行数据的传递和事务等逻辑处理, 下面 Spring 不再赘述, 关于 SpringMVC,Mybatis 详情如下所述:
SpringMVC 框架
SpringMVC 和 Struts2 都属于表现层的框架, 但它是 Spring 框架的一部分, 这让 SpringMVC 有了先天的优势, 它延续了 Spring 在配置上简单省心的特点, 而且因为与 Spring 无缝对接, 这让安全性有了很大的保障. 同时 SpringMVC 解决了一个很大的问题就是如何降低处理业务数据的对象和显示业务数据的视图耦合性, 这个问题的解决让开发变得更加的简单.
Mybatis 框架
MyBatis 是一款优秀的持久层框架, 它支持定制化 SQL, 存储过程以及高级映射, 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的繁杂. 它可以使用简单的 xml 或注解来配置和映射原生信息, 将接口和 Java 对象映射成数据库中的记录.
Hibernate 固然优秀, 但是跟 Mybatis 相比, 它的封装太过于死板, 对一些复杂的 sql, 开发人员更喜欢手动的编写一些代码, 而不是通过特定的 HQL 语言去编写, 这样会间接的增加工作量, 而且 Mybatis 更好上手, 学习成本比 Hibernate 要低很多, 但是有一点不得不承认, Hibernate 的开源社区人数要碾压 Mybatis 的, 毕竟国外很多大佬还是喜欢用 Hibernate 的, 后期可以详细探索探索.
04 总结
无论如何, 学好框架都对我们有很大的帮助, 在这篇文章小编只是简单介绍了一下框架的三层架构以及两个流行的框架组合, 后面的文章中我会分别对一些框架进行详细的介绍.
来源: http://developer.51cto.com/art/201909/602533.htm