Hibernate与MyBatis区别
Hibernate是当前主流的ORM框架,对数据库结构提供了较为完整的封装。
MyBatis同样也是非常流行的ORM框架,主要在于pojo与SQL之间的映射关系。
区别:
1、两者最大的区别
针对简单逻辑,Hibernate与MyBatis都有相应的代码生成工具,可以生成简单基本的DAO层方法。
针对高级查询,MyBatis需要手动编写SQL语句,以及ResultMap,而Hibernate有良好的映射机制,开发者无需关心SQL的生成与结果映射,可以更专注于流程。
2、开发难度对比
Hibernate的开发难度大于MyBatis,主要由于Hibernate比较复杂,庞大,学习周期比较长。
MyBatis则相对简单,并且MyBatis主要依赖于生气了的书写,让开发者刚进更熟悉。
3、sql书写比较
MyBatis的sql是手动编写的,所以可以按照要求指定查询的字段,不过没有自己的日志统计,所以要借助Log4j来记录日志。
Hibernate也可以自己写sql来指定需要查询的字段,但这样就破坏了Hibernate开发的简洁性,不过Hibernate具有自己的日志统计。
4、数据库扩展性计较
MyBatis由于所有sql都是依赖数据库书写的,所以扩展性、迁移性比较差。
Hibernate与数据库具体的关联在XML中,所以HQL对具体是用什么数据库并不是很关心
5、缓存机制比较
相同点:Hibernate和MyBatis的二级缓存除了采用系统默认的缓存机制外,都可以通过实现你自己的缓存成为其它第三方缓存方案,创建适配器来覆盖缓存行为。
不同点:Hibernate的二级缓存配置在SessionFactory生成配置文件中进行详细配置,然后再在具体的表对象映射中配置那种缓存。
MyBatis的二级缓存配置都是在每个具体的表对象映射中进行详细配置,这样针对不同的表可以自定义不同的缓冲机制,并且MyBatis可以在命名空间中共享相同的缓存配置和实例,通过Cache-ref来实现。
两者比较,因为Hibernate对查询对象有着良好的管理机制,用户无需关心SQL,所以在使用二级缓存时如果出现脏数据,系统会报出错误提示。
而MyBatis在这一方面使用二级缓存时需要特别小心,如果不能完全去顶数据更新操作的波及范围,避免cache的盲目使用,否则,脏数据的出现会给系统的正常运行带来很大的隐患。
6、总结
Hibernate与MyBatis都可以通过SessionFactoryBuider由XML配置文件生成SessionFactory,然后由SessionFactory生成Session,最后由Session来开启执行事务和SQL语句。
而MyBatis的优势是MyBatis可以进行更为细致的SQL优化,可以减少查询字段,并且容易掌握。
Hibernate的优势是Dao层开发比MyBatis简单,MyBatis需要维护sql和结果映射,数据库移植性,MyBatis的数据库移植性不好,不同的数据库需要写不同SQL,有更好的二级缓存机制,可以使用第三方缓存,MyBatis本身提供的缓存机制不佳。
Hibernate与MyBatis区别的更多相关文章
- 【JAVA框架】Hibernate 与Mybatis 区别
Hibernate Mybatis 简介 区别 与联系 欢迎提出见解及转载. 1 简单简介 1.1 Hibernate 框架 Hibernate是一个开放源代码的对象关 ...
- 框架和事务 非常 有用 hibernate和mybatis区别
1****第一章 Hibernate与MyBatis 章 开发对比 开发学习 Hibernate的真正掌握要比Mybatis来得难些.Mybatis框架相对简单很容易上手,但也相对简陋些.个人觉得要用 ...
- hibernate和mybatis区别
看图 Hibernate mybatis 难易度 难 简单,容易上手 编码 良好的映射机制,不需要关心 需要手动编写sql,resultMap 调优 制定合理的缓存策略: 尽量使用延迟加载特性: ...
- Hibernate 与 mybatis 区别
JAVA面试中问及HIBERNATE与 MYBATIS的对比,在这里做一下总结 我是一名java开发人员,hibernate以及mybatis都有过学习,在java面试中也被提及问道过,在项目实践 ...
- Hibernate和Mybatis区别 详细 有用
1.开发上手难度 hibernate的真正掌握(封装的功能和特性非常多)要比Mybatis来得难. 在真正产品级应用上要用Hibernate,不仅对开发人员的要求高,hibernate往往还不适合(多 ...
- 以及Hibernate和Mybatis区别
ORM框架? Object Relational Mapping,对象-关系映射. 项目中的业务实体有两种表现形式:对象和关系数据,即在内存中表现为对象,在数据库中表现为关系数据. 为什么需要ORM框 ...
- Hibernate与Mybatis的概念区别
首先简单介绍下两者的概念: Hibernate :Hibernate 是当前最流行的ORM框架,对数据库结构提供了较为完整的封装. Mybatis:Mybatis同样也是非常流行的ORM框架,主要着力 ...
- Spring Data JPA、MyBatis还有Hibernate有什么区别
原文:https://www.imooc.com/article/19754?block_id=tuijian_wz Spring Data JPA.MyBatis还有Hibernate有什么区别 2 ...
- Hibernate 与mybatis的区别
转自:https://blog.csdn.net/julinfeng/article/details/19821923 为方便以后准备面试,把一些常用的技术整理出来,会不定期更新. 首先简单介绍下两者 ...
随机推荐
- POJ 1797 Heavy Transportation
题目链接:http://poj.org/problem?id=1797 Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K T ...
- C++ Primer : 第十二章 : 动态内存之unique_ptr和weak_ptr
unique_ptr 一个unique_ptr拥有它所管理的对象,与shared_ptr不同,unique_ptr指向的对象只能有一个用户.当unique_ptr被销毁后,它所指向的对象也被销毁. 定 ...
- html部分---格式与布局;
一:position:fixed(相对于浏览器窗口来对元素进行定位) <style type="text/css"> .aa { position:fixed; lef ...
- AXIOM
AXIOM是一个实现了延迟构造和拉(pull parsing)解析的轻量级的xml解析器 http://reeboo.iteye.com/blog/317391 http://reeboo.iteye ...
- Hibernate的三种常用检索方式
Hibernate 提供了以下几种检索对象的方式 ¨ 导航对象图检索方式: 根据已经加载的对象导航到其他对象 ¨ OID 检索方式: 按照对象的 OID 来检索对象 ¨ ...
- LB负载均衡集群及NAT模式配置
一.LB(load balance)负载均衡集群 负载均衡集群常用的有: 1.软件实现的 nginx(工作在OSI第七层应用层) lvs+keepalived(工作在OSI第四层传输层) 2.硬件实现 ...
- 关于ServiceLocator ,AdpaterAwareInterface 注入
今天学习zf2 的过程,视频中讲到要把数据库的中的表继承TableGateway中,然后注册在ServiceManager中,但是里面没有$adapter,需要在serviceManger,中配置in ...
- VS2013远程调试功能
我跪了,我真的跪了. 实际证明这是不可行的. [开发机] Win10,64bits,VS2013 [目标机] Winxp VS2013的debug tool不能在xp上安装运行,卒! 如果有win7, ...
- checking
https://en.wikipedia.org/wiki/Java_performance https://en.wikipedia.org/wiki/Java_virtual_machine ht ...
- C#中正则表达式的使用
目前为止,许多编程语言和工具都包含对正则表达式的支持,C#也不例外,C#基础类库中包含有一个命名空间(System.Text.RegularExpressions)和一系列可以充分发挥规则表达式威力的 ...