MyBatis 本是 Apache 的一个开源项目 iBatis, 2010 年这个项目由 Apache Software Foundation 迁移到了 Google Code,且改名为 MyBatis 。2013 年 11 月迁移到 GitHub。 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使 用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java 对象)映射成数据库中的记录。
简单的说:MyBatis 是一个半自动 ORM 框架,其本质是对 JDBC 的封装。使用 MyBatis 重点需要程序员编写 SQL 命令,不需要写一行 JDBC 代码。
与 Hibernate 的比较
Hibernate 是一个全自动的 ORM 框架。因为 Hibernate 创建了 Java 对象和数据库表 之间的完整映射,可以完全以面向对象的思想来操作数据库,程序员不需要手写 SQL 语句, 而 MyBatis 中还需要手写 SQL 语句,所以是半自动化的,工作量要大于 Hibernate。
为什么半自动化的 Mybatis 比自动化的 Hibernate 受欢迎? MyBatis 需要手写 SQL 语句,所以工作量要大于 Hibernate。但是也正是由于自定义 SQL 语句,所以其灵活性、可优化性就超过了 Hibernate。
Hibernate 封装了 SQL 语句,由开发者对对象操作,Hibernate 来生成 SQL 语句。虽 然也可以通过映射配置来控制生成的 SQL 语句,但是对于要生成复杂的 SQL 语句,很难实 现,或者实现后导致性能的丢失。
而 MyBatis 将手写 SQL 语句的工作丢给开发者,可以更加精确的定义 SQL,更加灵活, 也便于优化性能。完成同样功能的两条 SQL 语句的性能可能相差十几倍到几十倍,在高并 发、快响应要求下的互联网系统中,对性能的影响更明显。
MyBatis 对存储过程可提供很好的支持。另外 MyBatis 的开发工作量大不意味着学习 成本大。对于新手,学习 Hibernate 时间成本比 Mybatis 大很多,Mybatis 很快就上手了。
总之,因为 MyBatis 具有封装少、映射多样化、支持存储过程、可以进行 SQL 语句优 化等特点,符合互联网高并发、大数据、高性能、高响应的要求,使它取代 Hibernate 成 为了 Java 互联网中首选的持久框架。而对于对性能要求不高的比如内部管理系统、ERP 等 可以使用 Hibernate。
相关文章
- 02-08微服务入门和springcloud简介
- 02-08ETL-petl简介
- 02-08SpringBoot集成 mybatis
- 02-08spring-boot集成mybatis
- 02-08MyBatis详细介绍
- 02-08数据库简介之SQL语言(四)
- 02-08萝卜叶万能助手SEO网络营销简介
- 02-08Git分支基础简介;创建分支;合并分支;删除分支;
- 02-08SpringBoot使用Mybatis-PageHelper,和PageResult
- 02-08R study day01 — 简介、基本操作