mybatis是什么?
自2010年起,当时有一个框架叫ibatis,起先发布于Apache(Geek组织),然后迁移至google并更名为mybatis,最后靠github(全球最大同性交友网站)更新传播。也就是说mybatis是ibatis的儿子。
- mybatisa是 O R M 框架:object relationship mapping(对象 关系 映射),是一个持久层框架(内部封装了JDBC)。
什么是持久层?
a)Dao:数据访问对象(data access object)与数据库交互
b)数据可以永久保存的地方 例如:U盘、硬盘。
c)非持久储存:当我们创建一个对象,并且将它放在堆内存中,如果断电则会导致内存中的所有数据丢失,这就是非持久储存。
d)持久化操作:则和非持久存储相反,它是将数据存储在内存当中,进行了序列化或者是数据库保存的操作,这就是持久化操作。
那么mybatis是做什么的呢?
- 支持普通sql查询(sql语句),存储过程以及高级映射。
- 负责数据库的操作(操作数据库增删改查CRUD)
Mybatis 与Hibernate的对比:
- mybatis 是半自动,支持普通sql、存储过程、高级映射。实现了sql语句与代码的分离,给程序的维护和sql的优化带来了极大的便利。
- Hibernate 是全自动、支持普通sql、hsql、存储过程、高级映射、非语句查询qbc qbe等。实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行。
还没接触过的同学听了,肯定会以为全自动肯定比半自动好,sql语句都不用我们自己写了,但是关键的就是在于sql的优化,Hibernate的解释运行流程交由框架来决定,程序员优化的可能性就不大了。而mybatis 是一个半自动框架,程序员有权力决定其中关键内容部分的sql优化,由框架返回结果(集合)。
共同点都是ORM框架。