`
robbin
  • 浏览: 4796847 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
377a9ecd-1ea1-34ac-9530-9daa53bb2a7b
robbin谈管理
浏览量:135595
社区版块
存档分类
最新评论

选择Hibernate还是iBatis?

    博客分类:
  • Java
阅读更多
选择Hibernate还是iBATIS都有它的道理:

Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。

Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。

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

iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

我的建议就是:

如果你的团队没有Hibernate高手,那么请用iBATIS,要把Hibernate用好,并不容易;否则你应该选择Hibernate,那样你的开发速度和代码简洁性都相当棒!

BTW:

我觉得rails的ActiveRecord是平衡性做的最好的,避免了Hibernate的复杂性和学习HQL的成本,同时具备iBATIS即学即用的简单性。
分享到:
评论
28 楼 海滩拾贝壳的小孩 2012-04-05  
正在考虑使用Hibernate构建网站
27 楼 zxg_javaeye 2011-02-18  
发表下个人看法,代码少且简洁的程序并不一定是好程序,要么程序员辛苦点,用户受益,要么程序员轻松点,CPU和用户累点,最近经历了一个行业ERP,在原来的基础上设计重新开发,发现hibernate开发速度的确快,很多操作都是get set set update就搞定了,但是问题出现在当数据多的时候,表之间关联越来越复杂的时候,就发现一些问题,比如你无法控制生成的sql的数量,你需要一个字段但是却查询了所有字段,甚至调用一个方法打出了几百条sql,但是看里面的代码单单从java的角度看,那是无懈可击的。
所以我觉得如果你团队有精通hibernate优化的人(不是会用hibernate开发),所有成员对怎么写效率高都清楚,对方法重用的长远考虑做的好,项目的用户可以忍受速度慢,你只求开发速度快,那么请你选择hibernate了!
26 楼 burnquist 2010-06-01  
老师介绍用ibatis ,个人不太了解,进来学点东西....
25 楼 diqizhan 2010-03-02  
今天的一个面试,问了这两者的一个区别,我应用上该文章的一些话,呵呵。
24 楼 evaspring 2010-01-13  
用了一段时间JDBC操作数据库 ,巨痛苦 ,现在用 ibatis 了 ~
23 楼 leejon 2009-11-21  
damoqiongqiu 写道
我正在用ibatis做项目噢,呵呵,爽!!因为我喜欢让数据库多做点事情,用Hibernate总感觉有点束缚手脚


个人觉得,把精力专注在对象模型的建设和对象的操作好些。因为程序中,本就是对象交互的一个过程,hibernate,能够很方便的使得开发人员去专注对象。
22 楼 yin_bp 2009-08-13  
强烈支持sql方式的持久层框架
21 楼 wangxf314 2009-07-02  
支持Hibernate,Ibatis太简陋了,每个操作都得用sql,大型项目都得用Hibernate
20 楼 thinke365 2009-06-02  
大型应用,用ibatis有优势吧
19 楼 warison_2008 2009-03-12  
3. 项目规模大,开发人员多时不适合用ibatis,毕竟sqlmap写的多拉,个性化的东西更多,sql的统一、优化将是很费劲的事情。
18 楼 damoqiongqiu 2009-03-05  
我正在用ibatis做项目噢,呵呵,爽!!因为我喜欢让数据库多做点事情,用Hibernate总感觉有点束缚手脚
17 楼 nbkangta 2009-02-23  
还是PS那句最重要呵呵
假期看了ROR,真的有种惊艳的感觉
16 楼 wanjune 2008-09-19  
支持楼主观点。顺便发表一下自己的意见。
=========================================================
我做过 NEC的项目 浜松図書館http://www.city.hamamatsu.shizuoka.jp/lifeindex/study/library/
该图书馆数据在几亿以上。逐年递增,使用的Hibernate。现在日本有20几个县市使用这个系统。

在这几年中一直忙于该项目,对Hibernate的优缺点有一定的体会。
缺点:
1.with same session id
在Hibernate检索的一条数据,如果你更新后,没有commit。再次去更新时,就会出错,在debug窗口,就会出现【with same session id】类似的错误。

解决方案:利用Hibernate支持的原始JDBC功能,去更新数据。

当然,对于一般的小项目而言,这种错很容易避免。但是对于庞大的和及其复杂的业务是不可避免的。我想,大家研究技术不是为了研究而研究的吧,研究的目的是为了更好地运用。

2.多表检索
对于该功能,NEC技术研究小组是彻底放弃。使用apache Commons DbUtils + JDBC去解决。但凡,对Hibernate有点研究的,都知道多表检索对于Hibernate的负载时恐怖的。

优点:
1.便于编写代码。
2.可以使用txt文件来保存SQL文。

总结:对于JAVA和Hibernate可以大量使用缓存技术。对于上述项目,使用了5个缓存技术。我记得我优化的一个业务,使用5个缓存后,检索从8秒降到了2秒以内。


15 楼 zgdlbill 2008-07-20  
hibernate框架加上工具,持久层代码(就算是大的项目,有级联都不要紧)不用一天时间,
而且全部无错自动生成(当然,如果真产生什么错误应该是设计和配置上的).
hsql更像java代码,不太像sql.hsql还有不易出错,容易调试等优点.
再有hsql不是用来精通的,是让你更关注于业务逻辑.
不过对于人多力量大的公司,就另当别论了...
14 楼 bukebushuo 2008-04-07  
我们公司用I
看中的有两点:SQL集中管理,因为我们不能保证程序员写的复杂SQL没问题。
               对程序员编码和设计要求低,因为我们没有精通H的人,并且不能保证会的人就是精通的。

对于多出来的那些工作量相比较于上面的,我们认为不是问题!
13 楼 hrtc 2008-03-18  
请问你的性能报告的帖子在哪儿?能不能给个链接,找了半天没找到
12 楼 zhaixf2001 2008-02-29  
感谢,非常感谢。对入门很有帮助
11 楼 siemens800 2008-01-17  
我喜欢iBatis
10 楼 hfwguitar 2007-08-22  
引用
如果你的团队没有Hibernate高手,那么请用iBATIS,要把Hibernate用好,并不容易;否则你应该选择Hibernate,那样你的开发速度和代码简洁性都相当棒!

这样看来学习Hibernate还是很有必要的了!
9 楼 cfantwt 2007-07-10  
学习中。。。

相关推荐

Global site tag (gtag.js) - Google Analytics