hibernate与mybatis的区别比较_mybatis中

hibernate与mybatis的区别比较_mybatis中为方便以后准备面试,把一些常用的技术整理出来,会不定期更新。首先简单介绍下两者的概念:Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装。Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO 与SQL之间的映射关系。下面具体从几个方面说一下两者的区别:1.两者最大的区

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

为方便以后准备面试,把一些常用的技术整理出来,会不定期更新。

首先简单介绍下两者的概念:

Hibernate Hibernate 是当前最流行的ORM框架对数据库结构提供了较为完整的封装

Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力点在于POJO SQL之间的映射关系

其次具体从几个方面说一下两者的区别:

1.两者最大的区别

针对简单逻辑,Hibernate和MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。

针对高级查询,Mybatis需要手动编写SQL语句,以及ResultMap。而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于业务流程。

2.开发难度对比

Hibernate的开发难度要大于Mybatis。主要由于Hibernate比较复杂、庞大,学习周期较长。

而Mybatis则相对简单一些,并且Mybatis主要依赖于sql的书写,让开发者感觉更熟悉。

3.sql书写比较

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

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

4.数据库扩展性比较

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

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

5.缓存机制比较

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

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

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

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

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

6.总结:

HibernateMyBatis都可以是通过SessionFactoryBuiderXML配置文件生成SessionFactory,然后由SessionFactory 生成Session,最后由Session来开启执行事务和SQL语句。

MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。

Hibernate的优势是DAO层开发比MyBatis简单,Mybatis需要维护SQL和结果映射。数据库移植性很好,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL有更好的二级缓存机制,可以使用第三方缓存。MyBatis本身提供的缓存机制不佳。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/195285.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Vim搜索关键字[通俗易懂]

    Vim搜索关键字[通俗易懂]有以下两种方法Method1:/content默认从上往下查找只读模式下输入/content后回车按n向下查找按N向上查找Method2:?content默认从下往上查找只读模式下输入?content后回车按n向上查找按N向下查找实例/content用Vim打开文件后,直接输入/关键字并回车,定位到第一个关键字,之后通过n向下查找,通过N向上查找?

    2022年9月23日
    1
  • Jmeter 安装篇

    Jmeter 安装篇Jmeter安装篇Jmeter的安装其实很简单,网上的资料也很多。这里不多说了,直接上步骤。Step1:安装JDK最好安装1.6版本以上的,如果本地安装了JDK那就查看一下是否配置了环境变量。(Jmeter是用java开发的,它的运行依赖于java环境)有关环境变量的配置,请自行百度。网上图文教程还是非常丰富的。Step2:下载Jmeterhttp://jme

    2022年5月8日
    41
  • 漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)

    漫谈数据仓库之拉链表(原理、设计以及在Hive中的实现)0x00前言本文将会谈一谈在数据仓库中拉链表相关的内容,包括它的原理、设计、以及在我们大数据场景下的实现方式。全文由下面几个部分组成:先分享一下拉链表的用途、什么是拉链表。通过一些小的使用场景来对拉链表做近一步的阐释,以及拉链表和常用的切片表的区别。举一个具体的应用场景,来设计并实现一份拉链表,最后并通过一些例子说明如何使用我们设计的这张表(因为现在Hive的大规模使用

    2022年10月17日
    2
  • 深入浅出理解 Java回调机制(异步)

    深入浅出理解 Java回调机制(异步)本片文章为转载,原文地址:http://codecloud.net/java-5-6371.html什么是回调?今天傻傻地截了张图问了下,然后被陈大牛回答道“就一个回调…”。此时千万个草泥马飞奔而过哈哈,看着源码,享受着这种回调在代码上的作用,真是美哉。不妨总结总结。一、什么是回调回调,回调。要先有调用,才有调用者和被调用者之间的回调。所以在百度百科中是这样的:

    2022年7月21日
    14
  • linux安装jdk8[通俗易懂]

    目录1.下载jdk82.源码包解压3.配置jdk环境变量4.测试是否安装成功操作系统:Centos6.464位工具:Xftp5、Xshell51.下载jdk8方法一:官网手动下载下载Linux环境下的jdk1.8http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-21…

    2022年4月18日
    72
  • myeclipse8.5注册码在线生成_MyEclipse激活码

    myeclipse8.5注册码在线生成_MyEclipse激活码主要是myeclipse8.0的注册码,估计7.5的也能用,注册码都是到2014年12月过期,附送注册机Subscriber:zxSubscriptionCode:mLR8ZO-655444-6967865456424254Subscriber:huahuaSubscriptionCode:uLR8ZO-655444-69678657696224504Subscriber:yayaSubsc

    2022年9月30日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号