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

选择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  
学习中。。。

相关推荐

    spring与hibernate以及ibatis集成的实例和具体配置图解

    在IT行业中,Spring、Hibernate和Ibatis是三个非常重要的框架,它们各自在不同的领域发挥着重要...集成Spring、Hibernate和Ibatis可以让开发者根据需求选择合适的数据访问方式,同时享受到Spring带来的便利性和灵活性。

    struts1+spring+hibernate+ibatis集成

    - 灵活性:开发者可以根据项目需求选择合适的ORM工具(Hibernate或iBatis),并自定义SQL查询。 然而,这种集成也有其挑战,比如学习曲线较陡峭,配置文件繁多,以及由于框架间的交互可能产生的性能影响。尽管如此...

    开发指南(spring,hibernate,ibatis,webwork)

    【开发指南(spring,hibernate,ibatis,webwork)】 在软件开发领域,Spring、Hibernate、iBatis和WebWork是四个重要的框架,它们分别在不同的层面为开发者提供了便利。下面将对这些框架进行详细阐述。 1. **Spring...

    springmvc_hibernate_ibatis_jdbc

    标题中的"springmvc_hibernate_ibatis_jdbc"指的是一个整合了SpringMVC、Hibernate、iBatis和JDBC这四种关键技术的Java应用框架。这个框架旨在提供一个全面且强大的解决方案,便于开发人员进行Web应用程序的构建。 ...

    Spring MVC+Hibernate&Ibatis学习 例子 教程

    Spring MVC、Hibernate和iBatis是Java开发中常用的三大框架,它们在Web应用程序开发中各自承担着不同的职责。本教程将深入探讨这三个框架的核心概念、使用方法以及它们之间的协同工作。 **Spring MVC** 是Spring...

    Struts2 Spring Hibernate IBatis

    Struts2 Spring Hibernate IBatis Struts2 Spring Hibernate IBatis Struts2 Spring Hibernate IBatis Struts2 Spring Hibernate IBatis Struts2 Spring Hibernate IBatisStruts2 Spring Hibernate IBatisStruts2 ...

    ibatis和hibernate的区别

    【ibatis和Hibernate的区别】 在Java开发中,ibatis和Hibernate都是常见的对象关系映射(ORM)框架,它们简化了数据库操作,将Java对象与数据库表之间的映射关系抽象出来,使得开发人员可以使用面向对象的方式处理...

    struts2+hibernate+ibatis整合

    在业务层,根据需求选择使用Hibernate或iBatis进行数据库操作。 通过这种整合,开发者可以在享受MVC框架带来的便利性的同时,利用Hibernate的ORM特性简化数据操作,并通过iBatis的灵活SQL定制来优化性能。对于新手...

    将Hibernate和iBatis两Orm框架整合,取长补短

    4. **接口封装**:创建统一的DAO接口,根据业务需求决定调用Hibernate还是iBatis的方法。 在"复件 hiTestPro"这个项目中,可能包含了整合Hibernate和iBatis的示例代码,可以进一步研究其具体实现方式,包括配置文件...

    iBatis和Hibernate的区别

    iBatis和Hibernate各有优劣,选择哪个框架取决于具体项目的需求。对于需要高度定制化SQL查询的项目,iBatis可能是更好的选择;而对于追求快速开发、希望减少手工编码量的项目,Hibernate则更为合适。最终的选择应当...

    Hibernate和IBatis对比

    选择Hibernate还是iBATIS取决于项目的具体情况。对于需要快速开发、数据库模型相对固定的项目,Hibernate可能是更好的选择;而对于需要高度定制SQL语句、性能要求极高的应用,iBATIS则更具优势。最重要的是,无论...

    jsp+struct+hibernate+ibatis资源集锦珍藏

    在IT行业中,开发高效、可维护的Web应用是至关重要的,而`JSP`、`Struts`、`Hibernate`和`iBatis`这四个技术框架是Java Web开发领域中的核心工具。这个名为"jsp+struct+hibernate+ibatis资源集锦珍藏"的压缩包显然...

    hibernate和ibatis的区别

    主要描述的是hibernate和ibatis的区别,在什么时候使用hibernate比较好

    访问数据库基本封装(spring/hibernate/ibatis)

    在实际项目中,选择Spring、Hibernate或iBatis取决于具体需求。Spring适合大型、复杂的应用,因为它提供了全面的解决方案,包括数据库访问、事务管理、安全等。Hibernate则适用于需要ORM特性的项目,简化了对象和...

    struts2-spring-ibatis-hibernate(hibernate与ibatis集成)

    Struts2、Spring、iBatis 和 Hibernate 是四个在 Java Web 开发中广泛使用的开源框架。这个项目将它们集成为一个整体,为初学者提供了一个学习和理解这些技术如何协同工作的实例。 **Struts2** 是一个基于 Model-...

    ssh整合(spring+hibernate+ibatis)

    SSH整合是指将Spring、Hibernate和iBatis三个开源框架集成在一起,以实现高效、灵活的Web应用程序开发。Spring是核心的依赖注入(DI)和面向切面编程(AOP)框架,Hibernate则是一个强大的对象关系映射(ORM)工具,...

    hibernateVSibatis

    选择Hibernate还是iBatis,取决于项目的具体需求、团队的技术背景以及对性能、灵活性与开发效率的综合考量。若追求对象模型的丰富性和开发效率,且愿意投入时间和精力去掌握和优化Hibernate,那么Hibernate无疑是更...

Global site tag (gtag.js) - Google Analytics