一.Spring框架
1.1SpringIOC
IOC是一个容器,Spring中,一切java资源都是java Bean容器,容器的目标是管理Bean和他们之间的关系。在SpringIOC里装载着各种Bean,包含Java Bean的建立、事件、行为等都是由IOC容器管理。Spring依靠描述完成对象的创建以及依赖关系。
例子:
插座依赖国家标准(可以定义为一个接口,Socket)去定义,目前有两种插座(Scoket1和Socket2)。
当使用插座1时,有如下代码:
java">Socket socket = new Socket1();
user.setSocket(socket);
user.userSocket();
国家标准插座接口和插座1绑在一起。如果有其他插座则需要修改Socket1(),每次改变都需要进行修改,所以SpringIOC可以解决该问题。
SpringIOC通过使用配置的方式,让SpringIOC容器通过配置找到插座。使用XML对插座和用户的应用插座进行描述。
<bean id="socket" class="Socket1"/>
<bean id="user" class="xxx.User">
<property name="socket" ref="socket"/>
</bean>
Socket接口可以不依赖任何插座,通过配置进行切换。控制反转如下图所示。
上图的配置信息是“我要插座2”,则SpringIOC使用插座2通过国家标准插座接口注入使用者,控制权在SpringIOC容器中,其根据描述找到使用者需要的资源。该方式的好处是不再依赖某个实现类,需要使用某个实现类时通过配置信息完成。不需要使用new进行创建对象,不需要找资源,需要向SpringIOC容器描述所需资源,SpringIOC自己会找到需要的资源。刚方法还提供对Java Bean生命周期的管理,延迟加载。
1.2 SpringAOP
SpringAOP用于数据库事务的编程。在SpringAOP实现的数据库事务管理是以异常作为消息的。在默认的情况下只需要Spring接收到异常信息就会对数据库的事务进行回滚,这样就会知道Spring的事务管理中只要让它接收到异常信息就会回滚事务,不需要通过代码实现这个过程。
二.Mybatis介绍
Mybatis优势在于灵活,Mybatis的数据访问层DAO不需要实现类,只需要一个接口和XML。Mybatis提供自动映射、动态SQL、级联、缓存、注解、代码和SQL分离等特性,进行SQL优化。
对Hibernate和Mybatis进行比较:
2.1 Hibernate介绍
Mybatis和Hibernate都需要POJO和数据库表的映射。
将POJO对象和表相互映射的框架称为对象关系映射,Hibernate基本不需要编写SQL就可以通过映射关系操作数据库,是一种全表映射。
Hibernate的映射文件内容如下所示。
Hibernate使用Session操作数据库数据。
2.2 Mybatis
Mybatis不屏蔽SQL,可以制定SQL规则,更加精确定义SQL。Mybatis与数据库表的映射文件如下所示。
resultMap用于定义映射规则,mapper元素中的namespace属性要和一个接口的全限定名保持一致,SQL的id需要和接口定义的方法完全一致。定义Mybatis映射文件如下所示。
Mybatis对于数据库数据的操作如下。
2.3 两者的区别
Hibernate和Mybatis在业务逻辑层上基本一致,对于映射层,Hibernate的配置不需要接口和SQL,不需要大量SQL,并且提供日志、缓存、级联等。Mybatis可以随意碎屑SQL,支持动态SQL、处理列表、动态生成表名等,支持存储过程,灵活定义查询语句。
三.SpringMVC介绍
SpringMVC接口清晰,与IOC和AOP无缝对接。MVC模式将应用程序分为不同的方面,提供这些元素之间的松耦合。Model封装应用程序的数据和他们组成的POJO;View将模型数据渲染到视图Controller将处理用户请求并建立适当的模型将其传递到视图渲染。
SpringMVC可以定义逻辑视图,通过其提供的视图解析器就能方便找到对应的视图进行渲染,或者使用消息转换的功能。