MyBatis
1.面向对象设计的软件内部运行过程可以理解成就是在不断创建各种新对象、建立对象之间的关系,调用对象的方法来改变各个对象的状态和对象消亡的过程。(背景介绍)
2.为了在关机和内存空间不够的状况下,保持程序的运行状态,需要将内存中的对象状态保存到持久化设备和从持久化设备中恢复出对象的状态,通常都是保存到关系数据库来保存大量对象信息。从Java程序的运行功能上来讲,保存对象状态的功能相比系统运行的其他功能来说,应该是一个很不起眼的附属功能,java采用jdbc来实现这个功能,这个不起眼的功能却要编写大量的代码,而做的事情仅仅是保存对象和恢复对象,并且那些大量的jdbc代码并没有什么技术含量,基本上是采用一套例行公事的标准代码模板来编写,是一种苦活和重复性的工作。(就是以前对数据库的操作很繁琐且没有技术含量,且大部分代码逻辑都一样重复性大)。
3.通过数据库保存java程序运行时产生的对象和恢复对象,其实就是实现了java对象与关系数据库记录的映射关系,称为ORM(即Object Relation Mapping),人们可以通过封装JDBC代码来实现了这种功能,封装出来的产品称之为ORM框架。MyBatis就是一个ORM框架(Hibernate也是)。
4.使用MyBatis的基本流程:读取Mybatis配置文件 ->根据读取到的配置文件生成SqlSessionFactory ->创建SqlSession对象(开启事务) ->操作目标数据库 ->提交事务->关闭SqlSession
Spring
1.Spring实现了工厂模式的工厂类(在这里有必要解释清楚什么是工厂模式),这个类名为BeanFactory(实际上是一个接口),在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类,在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。
2. Spring提供了对IOC良好支持,IOC是一种编程思想,是一种架构艺术,利用这种思想可以很好地实现模块之间的解耦。IOC也称为DI(Depency Injection),什么叫依赖注入呢?简单来说就是你注入一个类,这个类里面需要用到另一个类,这时候就是需要依赖注入。例如:
<!--注册斧子有关的bean-->
<bean id="stoneAxe" class="org.lanqiao.bean.StoneAxe"></bean>
<bean id="steelAxe" class="org.lanqiao.bean.SteelAxe"></bean>
<bean id="person" class="org.lanqiao.bean.Person">
<property name="name" value="wang"></property>
<property name="axe" ref="stoneAxe"></property>
</bean>
一面那串代码里面person类里就需要一个stoneAxe类,这里就是依赖注入
3. Spring提供了对AOP技术的良好封装, AOP称为面向切面编程,就是系统中有很多各不相干的类的方法,在这些众多方法中要加入某种系统功能的代码,例如,加入日志,加入权限判断,加入异常处理,这种应用称为AOP。
SpringMVC
1.SpringMVC框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口。
SpirngMVC的运行流程: