转 ibatis(mybatis)和Hibernate的区别

来源:互联网 发布:程序员修炼之道txt 编辑:程序博客网 时间:2024/06/05 03:46

摘自原文链接:https://zhidao.baidu.com/question/1883317112619717188.html?device=mobile&ssid=0&from=1019023c&uid=0&pu=sz@320_1001,ta@iphone_2_5.1_3_537,usm@1&bd_page_type=1&baiduid=7B7FCE837BB2299C0D9A30E56ECFEB48&tj=www_zhidao_normal_6_0_10_title 

一.共同点:

1.都是O/R mapping框架,直接与数据库打交道,将数据持久化。

2.都提供方言支持不同类型数据库的访问,通过xml文件格式将数据库表与java对象连接起来。

3.都可以交给spring来管理

4.都是开源软件

 

二.区别:

hibernate对象关系映射框架,是当前流行的O/R框架,来自于sf.net,现在已成为HBOSS的一部分。hibernate相对较复杂,学习周期长。

ibatis/mybatis是另外一种优秀的o/r mapping框架,目前属于apache的一个子项目,2013年11月迁移到Github。ibatis上手快,很容易学学习。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

 

三.原理:

hibernate对数据结构进行了很好的封装,可以实现java对象也就是POJO是数据库表之间的映射,还能根据POJO及SQL自动生成表和执行命令。程序员往往只需定义好了pojo到数据库表的映射关系,即可通过hibernate提供的方法完成持久层操作。程序员甚至不需要对sql 的熟练掌握,hibernate/ojb会根据制定的存储逻辑,自动生成对应的sql并调用jdbc接口加以执行。

而ibatis则重点在于pojo与sql之间的映射关系。ibatis不能让我们通过POJO生成SQL语句来执行。具体的sql需要程序员编写,然后通过映射配置文件,将sql所需的参数,以及返回的结果字段映射到指定pojo。

 

四.机制:

使用ibatis提供的orm机制,对业务逻辑实现人员而言,面对的是纯粹的java对象。这一层与通过hibernate实现orm而言基本一致,而对于具体的数据操作,hibernate会自动生成sql语句,而ibatis则要求开发者编写具体的sql语句。相对hibernate而言,ibatis以sql开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。

 

五.系统维护或者二次开发:

当系统维护或者二次开发,无法对数据库结构做到控制和修改,那ibatis的灵活性将比hibernate更适合。

 

六.海量数据:

系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的sql语句(或存储过程)才能达到系统性能设计指标。在这种情况下ibatis会有更好的可控性和表现。

 

七.自动化程度:

ibatis需要手写sql语句,也可以生成一部分,hibernate则基本上可以自动生成,偶尔会写一些hql。同样的需求,ibatis的工作量比hibernate要大很多。类似的,如果涉及到数据库字段的修改,hibernate修改的地方很少,而ibatis要把那些sql mapping的地方一一修改。

 

八.与数据映射关系:

ibatis以数据库字段一一对应映射得到的po和hibernte这种对象化映射得到的po是截然不同的,本质区别在于这种po是扁平化的,不像hibernate映射的po是可以表达立体的对象继承,聚合等等关系的,这将会直接影响到你的整个软件系统的设计思路。

 

(九.技术支持:

hibernate现在已经是主流o/r mapping框架,从文档的丰富性,产品的完善性,版本的开发速度都要强于ibatis)

 

十.实现过程查看:

1.hibernate配置,进行数据库连接。

2.POJO与数据库映射的xml文件介绍

3.得到sessionFactory我们就可以通过会话工厂操作数据库

4.ibatis配置信息设置

5.POJO与数据库的建立xml文件定义

6.加载ibatis配置文件,给client初始化

6.通过client操作数据库

0 0
原创粉丝点击