【Java EE】认识SSM框架和Redis

认识SSM框架和Redis

目标:

  1. 了解Spring IoC和Spring AOP的基础概念
  2. 了解MyBatis的特点
  3. 了解Spring MVC的特点
  4. 了解为什么要使用NoSQL(Redis)及Redis的优点
  5. 掌握SSM和Redis的基本结构框图和各种技术的作用

Spring框架

Spring框架是Java应用最广的框架。它的理念包括IoC(控制反转)和AOP(面向切面编程)。

Spring IoC简介

IoC是一个容器,在Spring中,它会认为一切Java资源都是Java Bean,容器的目标就是管理这些Bean和它们之间的关系。Spring是依靠描述来完成对象的创建以及其依赖关系的。

首先,不用new的方式创建对象,而是使用配置的方式,然后让Spring IoC容器自己通过配置去寻找使用者需要的资源,这就是控制反转的含义。好处是Socket接口不再依赖于某个实现类,需要使用某个实现类时通过配置信息就可以完成了。

Spring AOP

IoC的目标就是为了管理Bean,而Bean是Java面向对象(OOP)的基础设计。Spring AOP常用于数据库事务的编程,在Spring AOP实现的数据库事务管理中,是以异常作为消息的。在默认的情况下(可以通过Spring的配置修改),只要Spring接收到了异常信息,它就会将数据库的事务回滚,从而保证数据的一致性,而不需要通过代码来实现这个过程。

MyBatis简介

MyBatis的优势在于灵活,几乎可以代替JDBC,同时提供了接口编程。目前MyBatis的数据访问层DAO(Data Access Objects)是不需要实现类的,它只需要一个接口和XML(或者注解)。MyBatis提供自动映射、动态SQL、级联、缓存、注解、代码和SQL分离等特性,使用方便,同时也可以对SQL进行优化,并且其具有封装少、映射多样化、支持存储过程、可以进行SQL优化等特点。

Hibernate与MyBatis的区别:两者都是持久层框架,都会涉及数据库,都是依赖某种方法将数据库的表和POJO映射起来。
Hibernate和MyBatis的增删改查,对于业务逻辑而言基本一致,对于映射层而言,Hibernate不需要提供接口和SQL,而MyBatis需要。
MyBatis可以自由书写SQL,支持动态SQL,处理列表,动态生成表名,支持存储过程。但是要求编写SQL和映射规则,工作量略大,且支持的工具有限,对于对于性能要求不高的系统,比如管理系统、ERP等可以使用Hibernate,而对于性能要求高、响应快、灵活的系统则推荐使用MyBatis。

Hibernate简介

在MyBatis或者Hibernate中可以通过XML或者注解提供映射规则,MyBatis通常使用XML方式实现映射关系。

我们把POJO对象和数据库表相互映射的框架称为对象关系映射(Object Relational Mapping, ORM)框架。MyBatis和Hibernate都可以称为ORM框架,区别在于Hibernate的涉及理念是完全面向POJO的,而MyBatis则不是。Hibernate基本不再需要编写SQL就可以通过映射关系来操作数据库,是一种全表映射的体现,而MyBatis则不同,它需要我们提供SQL去运行。

MyBatis不屏蔽SQL,使得程序员可以自己制定SQL规则,无须Hibernate自动生成规则,更加精确地定义SQL,从而优化性能。

Spring MVC简介

Spring MVC接口层次清晰,类比较简单,并且与Spring的核心IoC和AOP无缝对接。
MVC模式把应用程序(输入逻辑、业务逻辑和UI逻辑)分成不同的方面,同时提供这些元素之间的松耦合。

  • Model(模型):封装了应用程序的数据和由它们组成的POJO
  • View(视图):负责把模型数据渲染到视图上,将数据以一定的形式展现给用户。
  • Controller(控制器):负责处理用户请求,并建立适当的模型把它传递给视图渲染。

在Spring MVC中还可以定义逻辑视图,通过其提供的视图解析器就能够很方便地找到对应的视图进行渲染,或者使用其消息转换的功能,比如在Controller的方法中加入注解@ResponseBody后,SpringMVC就可以通过其消息转换系统,将数据转换为JSON,提供给前端Ajax请求使用。

最流行的NoSQL——Redis

NoSQL可以很大程度提供互联网系统的性能。它具备一定持久层的功能,也可以作为一种缓存工具。
对于NoSQL数据库而言,作为持久层,它存储的数据是半结构化的,读入内存中有更少的规则,读入速度更快。
作为缓存,它可以支持大数据存入内存中,只要命中率高,它就能快速响应,因为在内存中的数据读/写比数据库读/写磁盘的速度快。

当前Redis已经成为主要的NoSQL工具,其原因如下:

  • 响应速度。每秒可以执行大约110 000个写入操作,或者81 000个读操作。
  • 支持6种数据类型:字符串、哈希结构、列表、集合、可排序集合和基数。
  • 操作都是原子的
  • MultiUtility工具

SSM+Redis结构框图及概述

【Java EE】认识SSM框架和Redis

  • Spring IoC承担了一个资源管理、整合、即插即用的功能。
  • Spring AOP可以提供切换管理,特别是数据库事务管理的功能。
  • Spring MVC用于把模型、视图和控制器分层,组合成一个有机灵活的系统。
  • MyBatis提供了一个数据库访问的持久层,通过MyBatis-Spring项目,它便能和Spring无缝对接。
  • Redis作为缓存工具,它提供了高速度处理数据和缓存数据的功能,使得系统大部分只需要访问缓存,而无须从数据库磁盘中重复读/写;在一些需要高速运算的场合中,也可以先用它来完成计算,再把数据批量存入数据库,这样能极大地提升互联网系统的性能和响应能力。

参考资料

《Java EE 互联网轻量级框架整合开发》