`

Mybatis与Hibernate的区别

    博客分类:
  • java
 
阅读更多

<div class="iteye-blog-content-contain" style="font-size: 14px"></div>

 

 

两者相同点

  • HibernateMyBatis都可以是通过SessionFactoryBuiderXML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。其中SessionFactoryBuiderSessionFactorySession的生命周期都是差不多的。
  • HibernateMyBatis都支持JDBCJTA事务处理。

Mybatis优势

  • MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
  • MyBatis容易掌握,而Hibernate门槛较高。

Hibernate优势

  • HibernateDAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。
  • Hibernate对对象的维护和缓存要比MyBatis好,对增删改查的对象的维护要方便。
  • Hibernate数据库移植性很好,MyBatis的数据库移植性不好(Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差,而Hibernate与数据库具体的关联都在XML中,所以HQL对具体是用什么数据库并不是很关心。),不同的数据库需要写不同SQL
  • Hibernate有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

sql书写比较

 

MybatisSQL是手动编写的,所以可以按需求指定查询的字段。不过没有自己的日志统计,所以要借助log4j来记录日志。

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

 

数据库扩展性比较

 

 Mybatis由于所有SQL都是依赖数据库书写的,所以扩展性,迁移性比较差。

 Hibernate与数据库具体的关联都在XML中,所以HQL对具体是用什么数据库并不是很关心。

 

缓存机制比较

 

相同点:HibernateMybatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存或为其他第三方缓存方案,创建适配器来完全覆盖缓存行为。

不同点:Hibernate的二级缓存配置在SessionFactory生成的配置文件中进行详细配置,然后再在具体的表-对象映射中配置是那种缓存。

MyBatis的二级缓存配置都是在每个具体的表-对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓存机制。并且Mybatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。

两者比较:因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL。所以在使用二级缓存时如果出现脏数据,系统会报出错误并提示。

MyBatis在这一方面,使用二级缓存时需要特别小心。如果不能完全确定数据更新操作的波及范围,避免Cache的盲目使用。否则,脏数据的出现会给系统的正常运行带来很大的隐患。

他人总结

  • Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。 
  • Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。 
  • iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。 
  • iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

 

 

分享到:
评论

相关推荐

    springmvc、struts2区别、mybatis、hibernate区别

    struts2介绍、和springmvc对比,mybatis介绍和hibernate对比

    hibernate与mybatis一起使用取长补短

    标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...

    springboot(4) 整合mybatis和hibernate

    在本教程中,我们将深入探讨如何在Spring Boot项目中整合MyBatis和Hibernate这两个流行的ORM框架。Spring Boot因其简化配置和快速开发的能力而备受青睐,而MyBatis和Hibernate则是Java世界里常用的持久层解决方案。...

    深入浅析Mybatis与Hibernate的区别与用途

    "深入浅析Mybatis与Hibernate的区别与用途" Mybatis和Hibernate都是orm数据库框架,但是它们有着很大的区别。在本文中,我们将对Mybatis和Hibernate的区别与用途进行详细的分析。 自动化程度 Mybatis是半自动的,...

    spring-mybatis-hibernate-jar包

    标题中的"spring-mybatis-hibernate-jar包"指的是一个整合了Spring、MyBatis和Hibernate三个框架的Java项目打包成的JAR文件。这个JAR文件通常用于简化部署,将所有依赖集中在一起,便于在Java应用程序中使用。下面将...

    解决在同一项目中Hibernate与Mybatis共存的问题的解决方案.docx

    Hibernate封装了很多有用的API给开发者,降低了操作数据库的难度和复杂度,同时也减少了模板代码的数量,但Hibernate留给开发者可操作的空间相对Mybatis少了很多。 Mybatis框架使用起来很灵活,开发者可以自定义查询...

    Spring4+SpringMVC+mysql+memcached【同时支持mybatis+hibernate两种底层操作框架】

    在构建Web应用程序时,"Spring4+SpringMVC+mysql+memcached...而MyBatis或Hibernate则根据需求选择,作为与数据库交互的工具。这种技术栈组合旨在提供一个稳定、高效的Web应用平台,适应不同的开发需求和性能优化策略。

    4--3-阶段-基于MyBatis&Hibernate实现持久层开发整合--300.docx

    首先,MyBatis允许开发者编写动态SQL,将SQL语句与Java代码分离,提高了代码的可读性和可维护性。而Hibernate则通过提供对象化的数据库操作,消除了低级别的JDBC代码,简化了数据库交互,使得开发者可以专注于业务...

    JDBC-Mybatis-Hibernate实例.7z

    在本实例中,我们看到一个涵盖了JDBC、MyBatis和Hibernate三种不同方式来实现这一任务的项目。这三种技术各有优势,适应不同的应用场景。 首先,JDBC是Java标准API,用于连接和操作数据库。它提供了低级别的数据库...

    hibernate和mybatis区别.txt

    hibernate和mybatis区别.txtMybatis优势 MyBatis可以进行更为细致的SQL优化,可以减少查询字段。 MyBatis容易掌握,而Hibernate门槛较高。 Hibernate优势 Hibernate的DAO层开发比MyBatis简单,Mybatis需要维护SQL...

    基于 Mybatis,Hibernate,Spring 框架开发的绿色健康购物网

    在这个项目中,开发者选择了Mybatis、Hibernate和Spring这三个主流的Java框架来构建系统,这显示了对高效、稳定和灵活开发的追求。 **Mybatis** 是一个轻量级的持久层框架,它解决了传统JDBC操作数据库时代码繁琐的...

    hibernate与mybatis该如何选择

    在IT行业中,数据库操作是应用程序开发的核心部分,Hibernate和MyBatis是两个广泛使用的Java持久层框架,它们各自都有独特的优点和适用场景。选择合适的框架取决于项目需求、团队熟悉度以及性能考虑。以下是对这两个...

    mybatis.hibernate,springmvc工作原理以及流程总结文档.pdf

    mybatis.hibernate,springmvc工作原理以及流程总结文档

    mybatis-3.3.1+hibernate-validator-5.4.0.Final的jar包

    MyBatis和Hibernate Validator是Java开发中常用的两个框架,它们分别专注于数据持久层和数据验证。下面将详细讲解这两个框架的核心概念、功能以及如何在实际项目中应用。 **MyBatis** 是一个优秀的轻量级Java持久层...

    hibernate与mybatis异同

    Hibernate与MyBatis异同 Hibernate和MyBatis都是Java持久层框架,它们都是将Java对象与关系数据库表相互映射的工具。虽然它们都具有相似的功能,但是它们在实现机制、配置文件、映射关系、jar包依赖等方面存在着...

    mybatis与hibernate

    总结来说,MyBatis与Hibernate各有优势,选择哪个框架取决于项目的需求、团队的技术栈和对数据库操作的精细控制程度。对于需要高度定制SQL或追求极致性能的项目,MyBatis可能是更好的选择;而对于希望快速开发,且对...

    spring,struts,hibernate,mybatis的约束文件

    在Java Web开发中,Spring、Struts、Hibernate和MyBatis是四个非常重要的框架,它们分别扮演了不同的角色,帮助开发者构建高效、可维护的Web应用程序。这些框架都有自己的配置文件,用来定义和约束框架的行为。以下...

    基于 Mybatis、 Hibernate、 Spring 框架开发的绿色健康购物网

    在本项目中,我们探讨的是一个使用Mybatis、Hibernate和Spring框架开发的绿色健康购物网站。这个项目展示了如何将这三大主流的Java技术栈整合在一起,构建一个功能完善的电子商务平台。接下来,我们将深入讨论这三个...

    hibernate与MyBatis的区别

    ### Hibernate与MyBatis的区别详解 #### 一、概述 在Java开发领域中,ORM(Object Relational Mapping,对象关系映射)框架被广泛应用来处理应用程序中的对象与数据库表之间的映射关系,使得开发者能够更加专注于...

Global site tag (gtag.js) - Google Analytics