针对上面架构的每一个层面,目前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的,后期可以详细探索探索。