iBatis的sql语句需要自己手动写而Hibernate能够在程序运行时自动生成但是不要就这样以为Hibernate比iBatis方便其 实二者熟悉之后的效率差不多而Hibernate还能够自动建表等等这样的好处就在于你带着这个程序无论到什么机器上你都不需要数据库应为它能 自动为你完成而iBatis就必须要有相应的数据库表才能进行移植
Hibernate的特点
Hibernate功能强大数据库无关 性好O/R(对象/关系)映射能力强如果你对Hibernate相当精通而且对Hibernate进行了适当的封装那么你的项目整个持久层代码会 相当简单需要写的代码很少开发速度很快非常爽Hibernate对数据库结构提供了较为完整的封装Hibernate的O/R Mapping实现了POJO(实体类) 和数据库表之间的映射以及SQL 的自动生成和执行程序员往往只需定义好了POJO 到数据库表的映射关系即可通过Hibernate 提供的方法完成持久层操作程序员甚至不需要对SQL 的熟练掌握 Hibernate/OJB 会根据制定的存储逻辑自动生成对应的SQL 并调用JDBC 接口加以执行Hibernate的缺点就是学习门槛不低要精通门槛更高而且怎么设计O/R映射在性能和对象模型之间如何权衡取得平衡以及怎样用 好Hibernate方面需要你的经验和能力都很强才行但是Hibernate现在已经是主流O/R Mapping框架从文档的丰富性产品的完善性版本的开发速度都要强于iBATIS
iBATIS的特点
iBATIS入门简单 即学即用提供了数据库查询的自动对象绑定功能而且延续了很好的SQL使用经验对于没有那么高的对象模型要求的项目来说相当完美iBATIS的缺 点就是框架还是比较简陋功能尚有缺失虽然简化了数据绑定代码但是整个底层数据库查询实际还是要自己写的工作量也比较大而且不太容易适应快速数据 库修改当系统属于二次开发无法对数据库结构做到控制和修改那iBATIS的灵活性将比Hibernate更适合系统数据处理量巨大性能要求极为 苛刻这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标在这种情况下iBATIS会有更好的可控性和表现
现在就市场来说Hibernate的需求要大于iBatis的需求而Hibernate对个人能力的要求更高即使公司使用iBatis你在Hibernate的基础上也能快速掌握
总结:
面试的时候 从这两个地方想
在考虑性能问题时 用哪个更好?
在做大型项目室 用哪个更好?
依据这两个问题来回答 基本这题肯定就过关了
基础概念上
Hibernate基于ORM 使用hql 语句
iBatis直接使用sql