| Profil de Feeling路漫漫其修远兮,吾将上下而求索PhotosBlogListes | Aide |
|
12/03/2006 iBatis and HibernateiBatis 和 Hibernate 是目前最流行的2种O/R框架,但是两者差别也很大。由于某些原因,我必须学习Hibernate。其实这两种工具我觉得有一种就可以畅行无阻,实无两者都学习的道理。但是Java社区偏偏喜欢重复发明轮子,人在江湖,身不由己呀,想不学都难。
初期的时候,我并无采用任何框架的习惯,喜欢用自己的一套O/R工具,其实用自己的工具也无可厚非,但是使用一套成熟的框架有一个极为令人诱惑的附加效果:稳定性。既然称之为成熟的框架,那么就必然是健壮、应用的。于是我开始接触iBatis和Hibernate,总体而言iBatis比Hibernate更容易上手的多,它就是简单的SQL Mapping,没有面向对象形式的继承,仅仅就是把一张表映射到一个POJO上,一个平面的体系,很容易构造。一个查询对应一个自己手工编写的SQL,相当灵活,完全由自己控制。我想很适合那些自己设计表结构,自己编写O/R部分的开发人员。使用iBatis基本上就是一个傻瓜式的开发,不需要考虑对象之间的关系,也就是one and more。只要你会使用SQL,你就可以快速上手。
Hibernate我没有做过实际项目,目前处于学习状态,很难说这个东西到底是好是坏,不过就代码而言,我更喜欢iBatis的参数设置方式,传递一个key或者一个map就可以了,框架帮你自动映射。而不是Hibernate的那种JDBC式的传参方式,丑陋无比,不能自动映射,必须手工一一对应。
实际上iBatis是一个O/R toolkit,而Hibernate是一个O/R Manager,更多地参与了对象实体的管理。采用Hibernate,就要去应用面向对象的一些设计理念,也就是对象的继承体系,要和数据库的设计关联起来。可以这样来说,iBatis建立的是一个二位体系,而Hibernate建立的则是一个三位体系。从这个意义上来说,采用iBatis和Hibernate,2者对代码底层架构甚至是数据库的设计有质的影响。基本上来说,只要有表结构,就可以采用iBatis。而如果想采用Hibernate,大概数据库设计也要按照OO的思维模式来设计了。
iBatis学习曲线温和,只要会SQL就可以进行开发了,不过因为是直接操作SQL,所以在跨数据库方面就比较笨拙了,而且对表结构进行修改的时候,所有的相关部分,包括xml配置文件,映射class类,执行类都需要修改。Hibernate基本上SQL由它自动生成,通过设置Dialect可以实现在不同数据库之间的切换,而基本上不需要修改代码。不过个人感觉这个东西上手还是蛮复杂的,当然我指的并不是简单应用,而是把一个iBatis应用转化为Hibernate应用。
回头再写一些代码,应该能够对Hibernate有更实际的了解。对于Hibernate的关系,我已经从DOOP里学到了,剩下的就是它的关联、继承以及组件了。 CommentairesPour ajouter un commentaire, connectez-vous avec votre identifiant Windows Live ID (si vous utilisez Messenger ou Xbox LIVE, vous avez un identifiant Windows Live ID). Connectez-vous Vous n'avez pas d'identifiant Windows Live ID ? Inscrivez-vous RétroliensL'URL de rétrolien de ce billet est : http://cnfree2000.spaces.live.com/blog/cns!6201144F025F9D77!699.trak Blogs Web qui font référence à ce billet
|
|
|