`
shibin_1109
  • 浏览: 79817 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate和mybatis的区别

    博客分类:
  • java
orm 
阅读更多
以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与hibernate区别是非常大的,结合至今为止的经验,总结出以下几点:
1. hibernate是全自动,而mybatis是半自动。
hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而mybatis仅有基本的字段映射,对象数据以及对象实际关系仍然需要通过手写sql来实现和管理。
2. hibernate数据库移植性远大于mybatis。
hibernate通过它强大的映射结构和hql语言,大大降低了对象与数据库(oracle、mysql等)的耦合性,而mybatis由于需要手写sql,因此与数据库的耦合性直接取决于程序员写sql的方法,如果sql不具通用性而用了很多某数据库特性的sql语句的话,移植性也会随之降低很多,成本很高。
3. hibernate拥有完整的日志系统,mybatis则欠缺一些。
hibernate日志系统非常健全,涉及广泛,包括:sql记录、关系异常、优化警告、缓存提示、脏数据警告等;而mybatis则除了基本记录功能外,功能薄弱很多。
4. mybatis相比hibernate需要关心很多细节
hibernate配置要比mybatis复杂的多,学习成本也比mybatis高。但也正因为mybatis使用简单,才导致它要比hibernate关心很多技术细节。mybatis由于不用考虑很多细节,开发模式上与传统jdbc区别很小,因此很容易上手并开发项目,但忽略细节会导致项目前期bug较多,因而开发出相对稳定的软件很慢,而开发出软件却很快。hibernate则正好与之相反。但是如果使用hibernate很熟练的话,实际上开发效率丝毫不差于甚至超越mybatis。
5. sql直接优化上,mybatis要比hibernate方便很多
由于mybatis的sql都是写在xml里,因此优化sql比hibernate方便很多。而hibernate的sql很多都是自动生成的,无法直接维护sql;虽有hql,但功能还是不及sql强大,见到报表等变态需求时,hql也歇菜,也就是说hql是有局限的;hibernate虽然也支持原生sql,但开发模式上却与orm不同,需要转换思维,因此使用上不是非常方便。总之写sql的灵活度上hibernate不及mybatis。

总结:
mybatis:小巧、方便、高效、简单、直接、半自动
hibernate:强大、方便、高效、复杂、绕弯子、全自动

mybatis:
1. 入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。
2. 可以进行更为细致的SQL优化,可以减少查询字段。
3. 缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。
4. 二级缓存机制不佳。
hibernate:
1. 功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
2. 有更好的二级缓存机制,可以使用第三方缓存。
3. 缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。
举个形象的比喻:
mybatis:机械工具,使用方便,拿来就用,但工作还是要自己来作,不过工具是活的,怎么使由我决定。
hibernate:智能机器人,但研发它(学习、熟练度)的成本很高,工作都可以摆脱他了,但仅限于它能做的事。

转自:http://blog.csdn.net/wangpeng047/article/details/17038659
分享到:
评论

相关推荐

    hibernate和mybatis区别.txt

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

    hibernate与mybatis一起使用取长补短

    在IT行业中,数据库操作是应用程序的核心部分,而ORM(对象关系映射)框架如Hibernate和MyBatis则是处理这些操作的利器。标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在...

    Hibernate与 MyBatis的比较

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

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

    任何框架都有自身的能力范围,就拿Hibernate和Mybatis这两个ORM框架来说。 Hibernate封装了很多有用的API给开发者,降低了操作数据库的难度和复杂度,同时也减少了模板代码的数量,但Hibernate留给开发者可操作的...

    hibernate与mybatis异同

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

    spring+struts2+hibernate+mybatis

    一个简单的spring+struts2+hibernate+mybatis整合(数据库脚本放在项目资源文件的sql目录下) 因为没想好mvc用springmvc好,还是struts2好 所以没有整合进去

    web框架PPT——Struts 2+Hibernate+MyBatis+Spring 网站开发案例课堂 书籍附带PPT课件

    在现代的Web应用程序开发中,Java Web框架的组合使用已经成为了一种常见的模式,特别是Struts 2、Hibernate、MyBatis和Spring这四个组件的整合,它们分别在MVC架构的不同层面发挥着关键作用。本课程围绕这个组合展开...

    hibernate与MyBatis的区别

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

    SPRING ,HIBERNATE,MYBATIS重构系统

    总结来说,这个压缩包可能是一个教育或实战性质的资源,帮助开发者学习如何在Java项目中整合Spring、Hibernate和MyBatis,通过源码分析提升技能,并利用提供的工具简化开发流程。如果你正在寻求构建一个基于这些框架...

    spring boot 2多数据源,里面有hibernate和mybatis的多数据源代码

    在这个项目中,我们有两个主要的数据访问技术:Hibernate和MyBatis,它们都是Java领域中广泛使用的ORM(对象关系映射)工具。 **Hibernate** 是一个强大的ORM框架,它允许开发者通过Java对象来操作数据库,而无需...

    spring,hibernate,mybatis,测试等各种Jar包

    这些文件是Java EE开发中常用的一些库,涵盖了Spring框架、Hibernate ORM、MyBatis轻量级持久层框架、日志管理以及MySQL数据库连接等关键组件。以下是对这些库的详细解释: 1. **Spring框架**:Spring是Java企业级...

    开发框架spring+struts2+hibernate+MyBatis中文帮助文档

    Spring、Struts2、Hibernate和MyBatis是Java开发领域中的四大主流框架,它们各自承担着不同的职责,共同构建了高效、灵活的企业级应用开发体系。这篇文档将深入解析这四个框架的核心概念、功能和使用方法,旨在为...

    hibernate和mybatis的区别.txt

    hibernate和mybatis的区别.txt

    springboot(4) 整合mybatis和hibernate

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

    spring、struts、hibernate+mybatis 整合在在一起

    Spring、Struts、Hibernate以及MyBatis是Java开发中四大主流框架,它们分别负责不同的职责:Spring作为全面的容器和框架,提供依赖注入和事务管理;Struts则专注于MVC(Model-View-Controller)模式的实现,处理HTTP...

    Hibernate和Mybatis

    【Hibernate和Mybatis】是两种常用的Java持久层框架,它们主要负责在业务逻辑层处理数据库的持久化操作,简化了开发者对数据库的访问和管理。 **Hibernate原理:** 1. Hibernate通过`Configuration().configure();`...

    springMVC+hibernate+mybatis整合

    在IT行业中,构建高效、可扩展的Web应用是至关重要的,而Spring MVC、Hibernate和MyBatis这三大框架的整合正是实现这一目标的有效途径。本文将深入探讨如何将这三个强大的工具集成为一个统一的工作流,以优化Java ...

    纯JDBC实现hibernate和mybatis基本功能

    使用java的纯jdbc的代码通过反射模拟hibernate和mybatis

    CSDN最全面JavaEE面试题(Spring,SpringMVC,Hibernate,Mybatis)

    - Mybatis与Hibernate的区别,动态SQL的优势。 - XML配置和注解方式的Mapper配置。 - SQL映射文件的编写,ResultMap和ParameterMap的使用。 - Mybatis的Executor执行器,StatementHandler和ResultSetHandler。 - ...

    hibernate和mybatis对比分析

    1. Hibernate和MyBatis是当前最流行的O/R mapping框架,分别属于Jboss和Apache子项目。 2. Hibernate提供了较为完整的封装对数据库结构,实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。程序员可以通过...

Global site tag (gtag.js) - Google Analytics