Hibernate与Mybatis对比
2016-03-08 19:31
477 查看
首先因为我水平有限,我必须承认我是参考其他的资料来写的这篇博客,但是我会结合我自己的经验来写,这样知识可以掌握的更加牢固。
参考博客:http://zhangzuanqian.iteye.com/blog/1821620
Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。程序员往往只需定义好了POJO到数据库表的映射关系,即可通过Hibernate提供的方法完成持久层操作。
而ibatis注重POJO与SQL的映射。具体的SQL需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。
2. 当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合。
3. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。
4. iBATIS需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。同样的需求,iBATIS的工作量比Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate修改的地方是POJO类,而iBATIS要把那些sql mapping的地方一一修改。
2.更容易进行sql的优化,可进行细粒度的优化。更新一个字段,iBATIS比较容易,而hibernate在缺省的情况下会更新所有字段。
3.在查询的时候,查询一个POJO的部分字段或全部字段,iBATIS更加可控。
4.有的时候更新一条数据,如果使用hibernate会执行两条sql语句,第一个是查询,第二个是修改,这样会降低速度。而iBATIS只需要执行一条修改的sql语句即可。
2.hibernate有一级缓存Session和二级缓存SessionFactory
3.可维护性高。
hibernate和iBATIS各自还有很多的各自的特点,我会在以后的学习中继续补充。
参考博客:http://zhangzuanqian.iteye.com/blog/1821620
简介
首先hibernate和mybatis都是很优秀的ORM框架,但是两者有很多区别。Hibernate对数据库结构提供了较为完整的封装,Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。程序员往往只需定义好了POJO到数据库表的映射关系,即可通过Hibernate提供的方法完成持久层操作。
而ibatis注重POJO与SQL的映射。具体的SQL需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。
二者的对比
1. iBATIS非常简单易学,Hibernate相对较复杂,门槛较高。2. 当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合。
3. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。
4. iBATIS需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。同样的需求,iBATIS的工作量比Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate修改的地方是POJO类,而iBATIS要把那些sql mapping的地方一一修改。
iBATIS的优势
1.相对简单,学习周期短2.更容易进行sql的优化,可进行细粒度的优化。更新一个字段,iBATIS比较容易,而hibernate在缺省的情况下会更新所有字段。
3.在查询的时候,查询一个POJO的部分字段或全部字段,iBATIS更加可控。
4.有的时候更新一条数据,如果使用hibernate会执行两条sql语句,第一个是查询,第二个是修改,这样会降低速度。而iBATIS只需要执行一条修改的sql语句即可。
hibernate的优势
1.hibernate让我们以oo的方式操作数据库,这让我们看到了hibernate的强大之处,体验到操作数据的方便。2.hibernate有一级缓存Session和二级缓存SessionFactory
3.可维护性高。
hibernate和iBATIS各自还有很多的各自的特点,我会在以后的学习中继续补充。
相关文章推荐
- IOS开发中用到的三方库冲突的解决办法
- 第二周项目一 宣告“主权”
- That's My New Blog
- 关于INT_MIN
- [RxJS] Reactive Programming - New requests from refresh clicks -- merge()
- Java内存管理:深入Java内存区域
- Codeforces 625C - K-special Tables
- 理解Java中的弱引用
- 蓝桥杯_算法训练_ 最大最小公倍数
- 2016春季训练——贪心
- Dubbo使用笔记 关于Dubbo
- 软件工程(第一周)
- 动态更换网页的背景图
- 【FastDFS分布式文件系统之二】:FastDFS小文件上传性能测试及Python客户端上传操作
- 操作系统用C语言模拟进程基于优先级的调度程序
- uva 11346 Probability
- EXTJS 中 radiogroup 的各项所占的宽度不同的解决办法
- 就拿胖子说事2
- 第1周项目1 —宣告“主权”
- [Audio processing] 数据集生成 & 性别年龄分类训练 Python