赞
踩
本博客旨在概述MyBatis和Hibernate。在我们谈论MyBatis和Hibernate之前,最好先将对象关系映射作为一个概念 来讨论。
对象关系映射(ORM)是一种编程技术,它能够使用首选编程语言的面向对象范式(即,在关系数据库和面向对象的编程语言(如Java,.NET等)之间转换数据)编写简单和复杂的查询。
对象关系映射 (ORM) 是一种从面向对象的语言访问关系数据库的技术(设计模式),可帮助应用程序实现持久性。
那么什么是持久性呢?
持久性只是意味着我们希望应用程序的数据比应用程序进程更持久。在 Java 术语中,某些对象的状态位于 JVM 的范围之外,以便以后可以使用相同的状态。
Hibernate和MyBatis都与Spring框架兼容。
Hibernate是一个对象关系映射框架(ORM),它将Java类映射到数据库表,而MyBatis是一个持久性框架 - 而不是ORM,它将SQL语句映射到Java方法。
Hibernate是一种开源的轻量级ORM(对象关系映射)工具。
它是一个 Java 框架,通过将应用程序域对象映射到关系数据库表(反之亦然),简化了 Java 应用程序的开发,以与实现 JPA(Java 持久性 API)规范的数据持久性数据库进行交互。
Hibernate通常使用自定义查询语言,即休眠查询语言 (HQL) 或企业 JavaBeans 查询语言 (EJB QL)。
Hibernate具有以下设计理念:
MyBatis是一个开源、轻量级、持久的框架。
它是 JDBC 和Hibernate的替代方法。
它自动执行 SQL 数据库与 Java、.NET 等对象之间的映射。
MyBatis和其他持久性框架之间的显着区别在于,MyBatis强调使用SQL,而其他框架(如Hibernate)通常使用自定义查询语言(HQL / EJB QL)。
MyBatis是iBATIS 3.0的一个分支,由一个团队维护,该团队包括iBATIS的原始创建者。
MyBatis具有以下设计理念 -
MyBatis 以SQL为中心。它可以帮助您调用 SQL 语句并将结果(表)映射到对象树。
主要的好处是它不是ORM。它不会将表映射到对象,因此不会遇到 ORM 阻抗不匹配。
Hibernate用于
MyBatis用于
Hibernate是一个对象关系映射框架 (ORM),它将 Java 类映射到数据库表。
MyBatis是一个持久性框架,而不是ORM。它将 SQL 语句映射到 Java 方法。
场景:
例如,考虑要更改域数据的命令和只想获取一些数据的响应。
Hibernate适用于选择查询(情况1),允许您只创建POJO并保留/更新它。它也可以快速执行此操作,除非您的域非常大。
MyBatis非常适合获取查询(案例2),您只需要一个答案。
Hibernate 将尝试加载整个对象图,并且您需要使用延迟加载技巧开始调整查询,以使其在大型域上正常工作。
相反,如果你只想要一些分析POJO页面,那么同一查询的MyBatis实现将是微不足道的。
正因为如此,在选择中,MyBatis比Hibernate 更快。
因此,考虑到这两种情况以及您的应用程序的作用,您可以得出结论,是否需要Hibernate 或MyBatis。
如果你有一个简单的域名,只是获取信息,使用MyBatis。
如果您有复杂的域和持久实体,请使用Hibernate 。如果两者都做,请考虑混合方法(即,数千个实体以控制它)。
如上所述,如果您的关注点以对象为中心,则Hibernate效果更好。但是,如果您的关注点以数据库为中心,那么myBatis是一个更有力的选择。这两个工具的作用比上面描述的要多得多,但一个是ORM,一个不是。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。