MyBatis 简介
一 什么是ORM?
一、ORM简介
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
因此可以把ORM当成应用程序与数据库的桥梁。
二、为什么使用ORM框架
ORM框架是面向对象程序设计语言与关系型数据库发展不同步时的中间解决方案。
对于时下所有流行的编程语言而言,面向对象的程序设计语言代表了目前程序设计语言的主流和趋势,其具备非常多的优势,比如:
- 面向对象的建模、操作
- 多态、继承
- 摒弃难以理解的过程各部分。
- 简单易用、易理解。
但数据库的发展未能与程序设计语言同步,而且关系数据库系统的某些优势也是面向对象语言目前无法比拟的。比如:
- 大量数据查找、排序
- 集合数据连接操作、映射
- 数据库访问的并发、事务
- 数据库的约束、隔离
面对这种面向对象语言与关系数据库系统并存的局面,采用ORM就变成了一种必然。
采用ORM框架之后,应用程序不再直接访问底层数据库,而是以面向对象的方式操作持久化对象(例如创建、修改、删除等),而ORM框架则将这些面向对象的操作转化成底层的SQL操作。
二 流行的ORM框架简介
-
JPA
JPA本身只是一种ORM规范,并不是ORM产品。它是 Java EE规范制定者向开源世界学习的结果。相对于其他开源ORM框架,JPA的最大优势在于它是官方标准,因此具有通用性。如果应用程序是面向JPA编程,那么应用程序就可以在各种ORM框架之间自由切换。
-
Hibernate
目前最流行的开源ORM框架,已经被选为JBoss的持久层解决方案。整个Hibernate项目也一并投入了JBoss的怀抱,而JBoss又加入了Redhat组织。因此,Hibernate属于RedHat组织的一部分。Hibernate灵巧的设计、优秀的性能,以及丰富的文档,都是其风靡全球的重要因素.
-
MyBatis
MyBatis(早期名称是iBATIS)。是Apache软件基金组织的子项目。与其称它是种ORM框架,不如称它是一种“SQL Mapper”框架,它是一种“半自动化”的ORM的实现。曾经在Java EE开发中扮演非常重要的角色,但是其并不支持纯粹的面向对象操作,它允许开发人员直接编写SQL语句,更加灵活。
三 MyBatis 概述
一、MyBatis是什么?
MyBatis 本是 Apache 的一个开源项目——iBatis,2010 年这个项目由 Apache Software Foundation 迁移到了 Google Code,并且改名为 MyBatis。
MyBatis 是一个支持普通SQL查询、存储过程和高级映射的基于 Java 的 持久层框架。
MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。
目前,Java 的持久层框架产品有许多,常见的有 Hibernate 和 MyBatis。
二、Hibernate 和 MyBatis 的区别
1)sql 优化方面
- Hibernate 不需要编写大量的 SQL,就可以完全映射,提供了日志、缓存、级联(级联比 MyBatis 强大)等特性,此外还提供HQL(Hibernate Query Language)对 POJO 进行操作。但会多消耗性能。
- MyBatis 手动编写 SQL,支持动态 SQL、处理列表、动态生成表名、支持存储过程。工作量相对大些。
2)开发方面
- MyBatis 是一个半自动映射的框架,因为 MyBatis 需要手动匹配 POJO、SQL 和映射关系。
- Hibernate 是一个全表映射的框架,只需提供 POJO 和映射关系即可。
3)Hibernate 优势
- Hibernate 的 DAO 层开发比 MyBatis 简单,Mybatis 需要维护 SQL 和结果映射。
- Hibernate 对对象的维护和缓存要比 MyBatis 好,对增删改查的对象的维护要方便。
- Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL。
- Hibernate 有更好的二级缓存机制,可以使用第三方缓存。MyBatis 本身提供的缓存机制不佳。
4)Mybatis优势
- MyBatis 可以进行更为细致的 SQL 优化,可以减少查询字段。
- MyBatis 容易掌握,而 Hibernate 门槛较高。
总的来说,MyBatis 是一个小巧、方便、高效、简单、直接、半自动化的持久层框架,Hibernate 是一个强大、方便、高效、复杂、间接、全自动化的持久层框架。
所以对于性能要求不太苛刻的系统,比如管理系统、ERP 等推荐使用 Hibernate,而对于性能要求高、响应快、灵活的系统则推荐使用 MyBatis