前言
看了springMVC视频觉得自己对Mybatis的理解不深,所以回来再看了一遍视频。
概述
Mybatis是一个持久层的框架,是apache下的顶级项目。它的前身是iBatis,2010年这个项目由apache software foundation迁移到Google code,并且改名为Mybatis,实质上也Mybatis对ibatis进行一些改进。2013年11月迁移到Github。
Mybatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行了封装,使开发者只需要关注SQL本身,而不需要花费精力去处理如:注册驱动、创建connection、创建satement、手动设置参数、结果集检索等JDBC繁杂的过程代码。
Mybatis通过XML或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过Java对象和statement中的SQL进行映射生成最终执行的SQL语句,最后由Mybatis框架执行SQL并将结果映射成Java对象返回。
Mybatis框架
SqlMapConfig.xml是Mybatis的全局配置文件,名称可以是不固定的。在这个文件中配置了数据源、事务等Mybatis运行环境配置映射文件。
SqlSessionFactory是会话工厂,它根据配置文件创建工厂,作用是创建sqlSession.
SqlSession是一个会话接口,它是面向用户的接口。作用是操作数据库,发出sql增删改查。
Executor是执行器,也是一个接口,可以是基本执行器和缓存执行器。作用是SqlSession内部通过执行器操作数据库。
mapped statement是底层封装的对象。作用是对操作数据库存储封装,包括sql语句,输入参数和输入结果类型。
Mybatis和hibernate的对比
Mybatis和hibernate不同,它不完全是一个ORM框架,因为MyBatis需要程序员自己编写Sql语句,不过mybatis可以通过XML或注解方式灵活配置要运行的sql语句,并将java对象和sql语句映射生成最终执行的sql,最后将sql执行的结果再映射生成java对象。
Hibernate对象/关系映射能力强,数据库无关性好,对于关系模型要求高的软件(例如需求固定的定制化软件)如果用hibernate开发可以节省很多代码,提高效率。但是Hibernate的学习门槛高,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡,以及怎样用好Hibernate需要具有很强的经验和能力才行。