mybatis与hibernate区别?
一、mybatis与hibernate区别
1. sql 优化方面
Hibernate 使用 HQL(Hibernate Query Language)语句,独立于数据库。不需要编写大量的 SQL,就可以完全映射,但会多消耗性能,且开发人员不能自主的进行 SQL 性能优化。提供了日志、缓存、级联(级联比 MyBatis 强大)等特性。MyBatis 需要手动编写 SQL,所以灵活多变。支持动态 SQL、处理列表、动态生成表名、支持存储过程。工作量相对较大。2. 开发方面
MyBatis 是一个半自动映射的框架,因为 MyBatis 需要手动匹配 POJO 和 SQL 的映射关系。Hibernate 是一个全表映射的框架,只需提供 POJO 和映射关系即可。3. 缓存机制比较
Hibernate 的二级缓存配置在 SessionFactory 生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置缓存。
MyBatis 的二级缓存配置在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且 Mybatis 可以在命名空间中共享相同的缓存配置和实例,通过 Cache-ref 来实现。
Hibernate 对查询对象有着良好的管理机制,用户无需关心 SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。而 MyBatis 在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围,避免 Cache 的盲目使用。否则脏数据的出现会给系统的正常运行带来很大的隐患。
4. Hibernate优势
Hibernate 的 DAO 层开发比 MyBatis 简单,Mybatis 需要维护 SQL 和结果映射。Hibernate 对对象的维护和缓存要比 MyBatis 好,对增删改查的对象的维护要方便。Hibernate 数据库移植性很好,MyBatis 的数据库移植性不好,不同的数据库需要写不同 SQL。Hibernate 有更好的二级缓存机制,可以使用第三方缓存。MyBatis 本身提供的缓存机制不佳。5. Mybatis优势
MyBatis 可以进行更为细致的 SQL 优化,可以减少查询字段。MyBatis 容易掌握,而 Hibernate 门槛较高。延伸阅读:
二、MyBatis是什么
MyBatis 是一个开源、轻量级的数据持久化框架,是 JDBC 和 Hibernate 的替代方案。MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身。
MyBatis 支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。其封装性低于 Hibernate,但性能优异、小巧、简单易学、应用广泛。
MyBatis 前身为 IBatis,2002 年由 Clinton Begin 发布。2010 年从 Apache 迁移到 Google,并改名为 MyBatis,2013 年又迁移到了 Github。
MyBatis 的主要思想是将程序中的大量 SQL 语句剥离出来,使用 XML 文件或注解的方式实现 SQL 的灵活配置,将 SQL 语句与程序代码分离,在不修改程序代码的情况下,直接在配置文件中修改 SQL 语句。
MyBatis 与其它持久性框架最大的不同是,MyBatis 强调使用 SQL,而其它框架(例如 Hibernate)通常使用自定义查询语言,即 HQL(Hibernate查询语言)或 EJB QL(Enterprise JavaBeans查询语言)
以上就是关于mybatis与hibernate区别的内容希望对大家有帮助。

相关推荐HOT
更多>>
JAVA和C++有什么区别?
一、JAVA和C++的区别Java和C++是两种不同的编程语言,具有以下区别:1、语法不同Java是一种面向对象的编程语言,语法相对简单,注重可读性和...详情>>
2023-10-19 23:27:55
iso与gho的区别?
一、iso与gho的区别1、来源不一样ISO光盘镜像文件可以直接刻录成光盘使用(带启动),也可以说是一个压缩包。GHO是GHOST境像文件、是用GHOST备份...详情>>
2023-10-19 21:08:10
mybatis与hibernate区别?
一、mybatis与hibernate区别1. sql 优化方面Hibernate 使用 HQL(Hibernate Query Language)语句,独立于数据库。不需要编写大量的 SQL,就可...详情>>
2023-10-19 20:40:41
云计算与分布式计算有哪些区别?
一、云计算与分布式计算的区别云计算是并行计算、分布式计算和网格计算的发展,或者说是这些计算机科学概念的商业实现。云计算是虚拟化、效用计...详情>>
2023-10-19 20:15:44