论坛首页 Java企业应用论坛

iBATIS 介绍(by jini)

浏览 16651 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2003-09-17  
iBATIS DB Layer 不能算是一个 O/R mapping
不过他可以简化 DAO 的工作
可以算是个 SQL Mapping ...

他的观念很简单
可以下载 iBATIS 的 jPetstore 当作 sample code 来学习
最重要的是 com.ibatis.jpetstore.persistence.*
你可以看到 sql/*.xml 就是 sql mapping
简单的 mapping sql 观念 对於开发及维护是一件很轻松的事情
而他的 MVC Framework 是采用 struts
可以当作基本教材来学习 jsp/servlet MVC 开发

另外, hibernate 是完全的 O/R mapping
你可以看一下 Clinton Begin ( iBATIS DB 作者 )所做的评论
http://sourceforge.net/forum/message.php?msg_id=2141106
这句话, 也是我最喜欢对其他 爱拿 xxx 和 yyy 比较的人 所说的话
In the end the choice is yours and nobody can tell you what the right one is,
Trust only yourself, draw your own conclusions and do lots of testing!
   发表时间:2003-09-17  
我最欣赏下面这句话,这也是我的心声:

In the end the choice is yours and nobody can tell you what the right one is, Trust only yourself, draw your own conclusions and do lots of testing!

我从来都不向别人直接推荐用Hibernate,因为Hibernate也不是万能的,不管是Hibernate也好,JDO也好,CMP也好,JDBC也好,你觉得哪个适合你,你就用哪一个。所谓各花入各眼。只不过对Hibernate既不了解也不研究,就胡说八道,莫名其妙的疯狂排斥Hibernate,就只能从自己身上找原因了。
0 请登录后投票
   发表时间:2004-09-20  
引用
if you are starting a new project and you're in full control of your object model and database design, Hibernate is a good choice of O/R tool.


引用
if you are accessing any 3rd party databases (e.g. vendor supplied), or you're working with a legacy database, or even just a really poorly designed database, then an O/R mapper might not be capable of handling the situation. That's were an SQL Mapper comes in handy


Clinton Begin已经说的很明确了,如果你开发一个新系统,希望完全控制对象模型,进行数据库设计,那么Hibernate是一个好的选择;如果你工作在一个很古老的数据库系统上,数据库设计非常糟糕,你又没有权利去改变数据库设计,那么iBATIS更合适一些。
2 请登录后投票
   发表时间:2004-09-20  
http://sourceforge.net/forum/message.php?msg_id=2141106

正在讨论iBATIS是否要加入Apache Project。我个人觉得还是不要加入的好,现在Apache Project已经成了一个大杂烩。加入Apache Project以后,大部分项目都失去了特色。
0 请登录后投票
   发表时间:2004-09-20  
我觉得这是BMP的一个好的备选方案
就和Hibernate与CMP之间比较一样
0 请登录后投票
   发表时间:2004-09-20  
有一篇由 夏昕 写的《iBATIS开发指南》,写得很好,是入门的好文章。
0 请登录后投票
   发表时间:2004-09-27  
最近在用ibatis,有一些困惑:
ibatis不是OR Mapping,它是基于sql生成DAO,这让它具有很多灵活性,代价就是没有OO,但是,这并不一定是缺点,我现在有些糊涂,因为在我的工作中,这是一个优点。
Clinton Begin的观点我不能完全理解,就我现在的理解,是否使用OR Mapping,完全取决于你对数据库的控制程度,如果能够控制,那么用Hibernate,否则还是ibatis比较务实些,但是,如果是前者,那就意味着静态建模和动态建模同时进行,就没有必要Mapping了亚?
0 请登录后投票
   发表时间:2004-10-25  
合适既是美,决定那个合适用那个
0 请登录后投票
   发表时间:2004-10-25  
我没有实际用iBATIS,但是通读了一遍iBATIS的文档。我的看法如下:

iBATIS非常简单易学,Hibernate非常复杂,门槛很高,如果你寻求快速上手,iBATIS是比较好的选择。

iBATIS需要手写sql语句,也可以生成一部分,Hibernate则完全自动生成,同样的需求,iBATIS的工作量比Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate由于不需要手写sql,修改的地方很少,而iBATIS要把那些sql mapping的地方一一修改。

iBATIS不容易做好Cache,要相当小心,而Hibernate完善的封装了持久操作,Cache是完全透明的。

iBATIS给我一种半对象化半关系化模型的感觉,iBATIS可能不适合对象化设计思路,例如iBATIS至今没有解决n+1条select的问题,这使得使用iBATIS的时候应该严格遵循数据库字段一一对应映射的规则。当然这种方式也许很适合习惯了数据库建模思路的开发人员。

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

实际上在我知道Hibernate之前,我自己已经采用类似iBATIS那种思路来做过一个小项目了,事实证明,这种方式到也切实可行,除了不够优雅之外。
1 请登录后投票
   发表时间:2004-10-25  
robbin说的我也有些考虑,不过,对于很多的程序员来说,数据库知识比OO的思想更有影响,所以iBatis更容易上手,而上手以后就不太愿意换个思路了。
另外,请教一下robbin,你说的n+1条select是什么意思?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics