`

Hibernate 和 Mybatis 两者相比的优缺点

 
阅读更多

1、开发上手难度

Hibernate的真正掌握(封装的功能和特性非常多)要比Mybatis来得难。

在真正产品级应用上要用Hibernate,不仅对开发人员的要求高,hibernate往往还不适合(多表关联查询等)。

 

2、系统调优调优方案对比

Hibernate:

* 制定合理的缓存策略;

* 尽量使用延迟加载特性;
* 采用合理的Session管理机制;
* 使用批量抓取,设定合理的批处理参数(batch_size);

* 进行合理的O/R映射设计

 

Mybatis:

* MyBatis在Session方面和Hibernate的Session生命周期是一致的,同样需要合理的Session管理机制。MyBatis同样具有二级缓存机制。 

* MyBatis可以进行详细的SQL优化设计。

 

3、SQL优化方面

Hibernate的查询会将表中的所有字段查询出来,这一点会有性能消耗。

Hibernate也可以自己写SQL来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性。

 

Mybatis的SQL是手动编写的,所以可以按需求指定查询的字段。

 

总的来说,Hibernate使用的是封装好,通用的SQL来应付所有场景,而Mybatis是针对响应的场景设计的SQL。Mybatis的SQL会更灵活、可控性更好、更优化。


4、移植性

Hibernate与具体数据库的关联只需在XML文件中配置即可,所有的HQL语句与具体使用的数据库无关,移植性很好。

MyBatis项目中所有的SQL语句都是依赖所用的数据库的,所以不同数据库类型的支持不好。

 

5、JDBC

Hibernate是在JDBC上进行了一次封装。

Mybatis是基于原生的JDBC的。Mybatis有运行速度上的优势。

 

6、功能、特性丰富程度

Hibernate提供了诸多功能和特性。要全掌握很难。

Mybatis 自身功能很有限,但Mybatis支持plugin,可以使用开源的plugin来扩展功能。

 

7、动态SQL

Mybatis mapper xml 支持动态SQL

Hibernate不支持

 

 

实际项目关于Hibernate和Mybatis的选型:

1、数据量:有以下情况最好选用Mybatis

如果有超过千万级别的表

如果有单次业务大批量数据提交的需求(百万条及以上的),这个尤其不建议用Hibernate

如果有单次业务大批量读取需求(百万条及以上的)(注,hibernate多表查询比较费劲,用不好很容易造成性能问题)

2、表关联复杂度

如果主要业务表的关联表超过20个(大概值),不建议使用hibernate

3、人员

如果开发成员多数不是多年使用hibernate的情况,建议使用mybatis

4、数据库对于项目的重要程度

如果项目要求对于数据库可控性好,可深度调优,用mybatis

 

分享到:
评论

相关推荐

    Hibernate与 MyBatis的比较

    标题中的“Hibernate与MyBatis的比较”是一个热门话题,主要关注的是两个Java持久层框架——Hibernate和MyBatis之间的差异、优缺点以及适用场景。这两个框架都是用于处理数据库操作,但它们的设计理念和使用方式有所...

    Mybatis和JPA区别表格详细比较.docx

    Mybatis 和 JPA 是两种广泛使用的 Java 持久层框架,它们各有特点和适用场景。以下是对两者的详细比较: 1. **自动建表支持**: - Mybatis 不支持自动建表,开发者需要手动编写 SQL 脚本来创建数据库表。 - JPA ...

    springmvc_mybatis查询示例

    虽然主要使用了SpringMVC和MyBatis,但理解Hibernate可以帮助开发者对比不同ORM框架的优缺点。Hibernate是一个完整的对象关系映射(ORM)解决方案,提供了对JDBC的封装,使得Java对象可以直接操作数据库。 总的来说...

    MyBatis面试题 37道1

    MyBatis的优缺点** 优点: - 减少了JDBC代码量,简化了数据库操作,降低了系统的维护难度。 - SQL语句可以在XML中独立编写,便于管理和优化,支持动态SQL,增强了查询的灵活性。 - 提供对象关系映射标签,简化了...

    基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip

    本压缩包文件"基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip"包含了一些关于如何使用Java中的三种主流数据访问技术——MyBatis、Spring JDBC和Hibernate的资源,这些技术都是Java开发者必备...

    mybatis教学课件

    #### 六、MyBatis优缺点 1. **优点**: - 减少了大量重复代码,提高了开发效率。 - SQL语句完全独立于Java代码,便于调试和维护。 - 支持XML标签编写动态SQL,增强了SQL语句的灵活性。 - 提供了丰富的映射标签,...

    mybatis-day01培训内容1

    MyBatis旨在填补JDBC和Hibernate之间的空白,结合两者的优点。它提供了一种介于完全的手动SQL操作和全自动化ORM之间的解决方案。MyBatis允许开发者自由地编写SQL,同时通过配置文件或注解将SQL语句与Java对象映射...

    Hibernate知识整理.doc

    - ORM 优缺点:优点是简化数据库交互,提高开发效率;缺点可能包括性能损耗、学习曲线、对复杂 SQL 支持不足等。 - 流行的 ORM 产品:除了 Hibernate,还有 MyBatis、JPA、TopLink 等。 7- LOG4J 的配置: Log4j 是...

    mybatis原理概述入门教程

    MyBatis相对于其他ORM框架如Hibernate,具有以下优缺点: 优点: - 更灵活的SQL编写,能够针对每个查询优化SQL。 - 易于理解和学习,API相对简单。 - 支持存储过程和复杂查询。 缺点: - 没有提供对对象关系的自动...

    ibatis Hibernate

    而“工具”标签可能指的是在实际项目中如何选择和使用这两个工具,或者比较它们各自的优缺点,以帮助开发者决定何时使用iBatis,何时使用Hibernate。 至于文件“HibernateDAO2.java”,这很可能是包含一个基于...

    spring_study

    书中会详细讲解如何使用XML或注解方式实现依赖注入,并对比两者的优缺点。 在数据访问方面,《Spring in Action》会介绍Spring的JdbcTemplate、SimpleJdbcTemplate以及命名参数JdbcTemplate,这些都是处理数据库...

    java 简历模版_java简历.doc

    - **持久层框架**:熟悉Hibernate和Mybatis,了解两者之间的优缺点。 - **Spring框架**:熟练掌握Spring框架,包括SpringMVC和SSM整合技术。 - **微服务**:了解SpringBoot框架,熟悉Dubbo。 2. **项目经验**: ...

    架构探险从零开始javaweb框架

    2. Hibernate和MyBatis:持久层框架如Hibernate和MyBatis简化了数据库操作,提供了ORM(对象关系映射)功能,使得开发者可以更专注于业务逻辑。 3. RESTful API设计:现代Web应用常常需要提供RESTful服务,书会介绍...

    架构师方向出题老师.pdf

    主要涉及业务架构师和基础架构师的区别、UML在系统架构中的重要性、微服务框架的选择(Springcloud与Dubbo)、分布式定时任务与普通任务的区别、...Reactor线程模型、消息中间件的选取以及Spring框架和MyBatis框架的优缺点等...

    基于java的高级应用

    Java框架如Hibernate和MyBatis可以帮助简化数据库操作,提高开发效率。 4. **基于MVC的Struts技术**:MVC(Model-View-Controller)是一种流行的设计模式,用于分离应用程序的业务逻辑、视图显示和控制器逻辑。...

    JDBC API数据库编程实作教程 PDF

    - 如Hibernate、MyBatis等ORM框架如何简化JDBC编程,以及两者的优缺点。 通过这个教程,学习者将能够熟练地运用JDBC API进行数据库操作,理解其工作原理,并能有效地处理各种数据库交互问题。无论你是初学者还是有...

    互联网高频Java后端面试题20道(适合1~3年)V1.0.32.docx

    两者的主要区别在于灵活性和对SQL的控制程度:MyBatis适合需要精细控制SQL的场景,而Hibernate更适合需要快速开发且不太关心底层SQL的项目。 **5. Java 虚拟机(JVM)** Java 虚拟机是Java程序的运行环境,它负责将...

    华为等各大厂Java面试笔试题汇总.rar

    - StringBuilder与StringBuffer:对比两者在多线程环境下的优缺点。 5. **接口与多态** - 接口:理解接口的定义、实现及用途,如Comparable和Serializable接口。 - 多态:掌握多态的实现,如向上转型和方法重写...

    SSH三大框架经典美文.pdf

    SSH三大框架指的是Struts、Hibernate和Spring,它们是Java企业级开发中常用的技术栈。这里主要讨论的是Struts和Spring框架。 **Struts框架** Struts是一个基于MVC设计模式的Java Web应用框架,它的主要目标是简化...

    pro spring

    本书详细介绍了这两种事务管理方式的具体实现方法,并讨论了它们之间的优缺点。 #### 十一、Spring中的验证、类型转换与格式化 数据的有效性和一致性是保证软件质量的关键因素之一。Spring框架提供了一系列工具来...

Global site tag (gtag.js) - Google Analytics