MyBatis 与 Hibernate

news/2024/12/2 6:46:50/

本博客旨在概述MyBatis和Hibernate。在我们谈论MyBatis和Hibernate之前,最好先将对象关系映射作为一个概念 来讨论。

对象关系映射(ORM)是一种编程技术,它能够使用首选编程语言的面向对象范式(即,在关系数据库和面向对象的编程语言(如Java,.NET等)之间转换数据)编写简单和复杂的查询。

对象关系映射 (ORM) 是一种从面向对象的语言访问关系数据库的技术(设计模式),可帮助应用程序实现持久性。

那么什么是持久性呢?

持久性只是意味着我们希望应用程序的数据比应用程序进程更持久。在 Java 术语中,某些对象的状态位于 JVM 的范围之外,以便以后可以使用相同的状态。

Hibernate和MyBatis都与Spring框架兼容。

Hibernate是一个对象关系映射框架(ORM),它将Java类映射到数据库表,而MyBatis是一个持久性框架 - 而不是ORM,它将SQL语句映射到Java方法。

什么是Hibernate?

Hibernate是一种开源的轻量级ORM(对象关系映射)工具。

它是一个 Java 框架,通过将应用程序域对象映射到关系数据库表(反之亦然),简化了 Java 应用程序的开发,以与实现 JPA(Java 持久性 API)规范的数据持久性数据库进行交互。

Hibernate通常使用自定义查询语言,即休眠查询语言 (HQL) 或企业 JavaBeans 查询语言 (EJB QL)。

Hibernate具有以下设计理念:

  • 轻量级 − Hibernate是一个轻量级框架,因为它不包含其他功能;它仅使用对象关系映射所需的那些功能。
  • 开源 − Hibernate是开源软件,这意味着每个人都可以免费使用它。
  • ORM(对象关系映射)− Hibernate是一个 ORM 工具,有助于 Java 类和关系数据库之间的交互。
  • 高性能 − Hibernate支持许多不同的提取技术,例如缓存、延迟初始化等,以实现高性能。
  • HQL(Hibernate查询语言)− Hibernate是一个轻量级框架,因为它不包含其他功能,并且仅使用对象关系映射所需的那些功能。
  • 缓存 − 缓存是将数据存储到缓存内存中并提高数据访问速度的过程。Hibernate支持两级缓存,即第一级和第二级缓存。
  • 自动生成 − Hibernate提供了自动生成表的功能。这意味着程序员不必担心查询实现,即Hibernate自己做。
  • 可伸缩性 − Hibernate是高度可伸缩的,因为它可以适应任何环境。Hibernate既可用于小规模应用程序,也可用于大规模应用程序。
  • 延迟加载 − Hibernate支持一个称为延迟加载的新概念。延迟加载概念检索执行的唯一必要对象。它还提高了应用程序的性能。
  • 数据库独立 − Hibernate是独立于数据库的,因为它提供“数据库方言”,所以我们不需要编写SQL查询。它支持许多数据库,如Oracle,MySql,Sybase等。

什么是MyBatis?

MyBatis是一个开源、轻量级、持久的框架。

它是 JDBC 和Hibernate的替代方法。

它自动执行 SQL 数据库与 Java、.NET 等对象之间的映射。

MyBatis和其他持久性框架之间的显着区别在于,MyBatis强调使用SQL,而其他框架(如Hibernate)通常使用自定义查询语言(HQL / EJB QL)。

MyBatis是iBATIS 3.0的一个分支,由一个团队维护,该团队包括iBATIS的原始创建者。

MyBatis具有以下设计理念 -

  • 开源 − MyBatis 是免费的开源软件。
  • 支持 ORM − MyBatis 支持许多与 ORM 工具相同的功能,例如延迟加载、联接提取、缓存、运行时代码生成和继承。
  • 简单性 − MyBatis被广泛认为是当今最简单的持久性框架之一。
  • 快速开发 − MyBatis 尽其所能促进超快速开发。
  • 可移植性 − MyBatis几乎可以用于任何语言或平台,例如适用于微软.NET的Java,Ruby和C#。
  • 独立接口 − MyBatis 提供独立于数据库的接口,帮助应用程序其余部分的 API 独立于任何与持久性相关的资源。
  • 存储过程 − MyBatis 以存储过程的形式封装 SQL,以便业务逻辑可以保留在数据库之外,并且应用程序更具可移植性,更易于部署和测试。
  • 内联 SQL − 无需预编译器,您可以完全访问 SQL 的所有功能。
  • 动态 SQL − MyBatis 提供了基于参数动态构建 SQL 查询的功能。

MyBatis 以SQL为中心。它可以帮助您调用 SQL 语句并将结果(表)映射到对象树。

主要的好处是它不是ORM。它不会将表映射到对象,因此不会遇到 ORM 阻抗不匹配。

在哪里使用Hibernate和MyBatis ?

Hibernate用于

  • 常规 CRUD(创建、读取、更新和删除)功能。
  • 环境由对象模型驱动,需要自动生成 SQL。
  • 会话管理。

MyBatis用于

  • 分析提取查询。
  • 存储过程和动态 SQL。
  • 支持复杂的搜索查询(其中搜索条件是动态的)和结果分页。

ORM 与持久性框架

Hibernate是一个对象关系映射框架 (ORM),它将 Java 类映射到数据库表。

MyBatis是一个持久性框架,而不是ORM。它将 SQL 语句映射到 Java 方法。

场景:

例如,考虑要更改域数据的命令和只想获取一些数据的响应。

  1. 创建/更新/删除一些复杂的域实体
  2. 运行分析提取查询(即求和/聚合查询)

Hibernate适用于选择查询(情况1),允许您只创建POJO并保留/更新它。它也可以快速执行此操作,除非您的域非常大。

MyBatis非常适合获取查询(案例2),您只需要一个答案。

Hibernate 将尝试加载整个对象图,并且您需要使用延迟加载技巧开始调整查询,以使其在大型域上正常工作。

相反,如果你只想要一些分析POJO页面,那么同一查询的MyBatis实现将是微不足道的。

正因为如此,在选择中,MyBatis比Hibernate 更快。

因此,考虑到这两种情况以及您的应用程序的作用,您可以得出结论,是否需要Hibernate 或MyBatis。

如果你有一个简单的域名,只是获取信息,使用MyBatis。

如果您有复杂的域和持久实体,请使用Hibernate 。如果两者都做,请考虑混合方法(即,数千个实体以控制它)。

总结

如上所述,如果您的关注点以对象为中心,则Hibernate效果更好。但是,如果您的关注点以数据库为中心,那么myBatis是一个更有力的选择。这两个工具的作用比上面描述的要多得多,但一个是ORM,一个不是。


http://www.ppmy.cn/news/622385.html

相关文章

OceanBase详解

OceanBase是阿里开发的分布式关系型(SQL)数据库,其目标是支持数百TB的数据量以及数十万TPS、数百万QPS的访问量,无论是数据量还是访问量,即使采用非常昂贵的小型机甚至是大型机,单台关系数据库系统都无法承受。 案例:…

初步认识Java垃圾回收算法

GCRoot指被栈上直接或间接引用的对象,或被本地方法栈直接或间接引用的对象,或被方法区引用的对象。 被引用的对象是不能被删除的。 如果对象跟GCRoot并没有直接或间接相连的关系,那么这些对象就可以被删除了。 标记-清理:将需要删…

空天地一体化通信网络中地面运营商的挑战与机遇

【摘 要】详细分析了天基网络和空基网络的网络特性、产业发展情况。卫星与HAPS通信具有传输覆盖广、不受地理环境限制、时延抖动小、可靠性高等特性。根据不同网络的能力特性,提出了未来空天地一体化网络在应急保障通信、立体化移动通信、偏远地区公众业务和大时空尺度下的通…

天地火宅

翻译了这么多天,一共就5页的论文,终于翻译完了。 这中间,就转载了一篇关于传销的文章,心里有不少想法啊!那么今晚就借此篇慢慢倒出来。 首先是这篇文章标题"天地火宅",这是前几天,我…

OceanBase 数据库

本节主要介绍 OceanBase 数据库产品及其技术特点。 自从 E.F.Codd 于 1970 年首次提出关系数据库模型后,关系数据库便以其易于使用的接口、完善的功能和生态而成为了 IT 领域必需的基础设施,广泛应用在各行各业,包括金融、电信、房地产、农林…

深圳海天地科技多款摄像头通过WHQL认证,获得微软徽标

微软WHQL认证代理公司  http://www.whql-china.com  深圳海天地科技有限公司多款摄像头通过微软WHQL认证,获得微软LOGO授权。海天地致力于设计出各种个人IT外围产品,在摄像头行业中有着相当大的优势。海天地摄像头种类繁多,有金刚狼系列,…

新天地

因为要为学习和以后工作打基础,所以想要多多结识程序爱好者.于是出于保护隐私的目的,只公布这里做为我的博客.我最早的博客就是csdn的,2004年的时候.不过后来有一阵子不上网,就忘记了密码.加上以前觉得这里有一些缺点,所以后来新申请的博客是spaces的.昨天换了sohu 的博客,但是…

第二章 道天地将法

第一章 道法术器势 第二章 Battle 的艺术 第三章 工具和方法 第四章 抽象的力量 第五章 结构与系统 第六章 DIKW金字塔模型 目录 前言 一、道天地将法 二、孙子兵法原文 三、孙子兵法译文 四、扩展阅读 五、总结 前言 全文2000字,预计阅读时长&#xff…