Ibatis与Hibernate的区别

ibatas的sql语句需要自己手动写,而hibernate能够在程序运行时自动生成。

Hibernate的特点:Hibernate功能强大,数据库无关性好,O/R(对象/关系)映射能力强,Hibernate的O/RMapping实现了POJO(实体类)和数据库表之间的映射,以及SQL的自动生成和执行。只需定义好了POJO到数据库表的映射关系,即可通过Hibernate提供的方法完成持久层操作。

缺点是:学习门槛不低,要精通门槛更高,怎么设计O/R映射,如何在性能和对象模型之间权衡取得平衡,怎样用好Hibernate方面很考验你的经验和能力,但是作为主流O/RMapping框架,文档较丰富,产品较完善,版本的开发速度都要强于iBATIS。

iBATIS的特点:iBATIS入门简单,提供了数据库查询的自动对象绑定功能,延续了SQL的使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。

缺点是:查询要自己写,不太容易适应快速数据库修改。

如果属于系统二次开发,无法对数据库结构做到很好地控制,那iBATIS的灵活性将比Hibernate更适合。系统数据处理量巨大,性能要求极为苛刻,需要高度优化的SQL语句(或存储过程)的情况下,iBATIS会有更好的可控性和表现。

总结:

Ibatis是自己手动在配置文件(即xml里写sql语句)易于维护,属半自动的,比起笨重的jdbc要强很多;适用于不清楚表结构,只知道其中几个字段并操作的,比如银行系统,一般不提供表,只提供接口字段的情况;

Hibernate是全自动的,一个实体对应一张表,可以以操作对象的方式对数据库进行增删改查,增删改之需要类似saveObjupdateObjdeleteObj这样的方法传入对象就可以了;查询可以写简练的hql,较适用于清楚数据的表结构的前提下。

相关推荐