`
bulote
  • 浏览: 1353926 次
文章分类
社区版块
存档分类
最新评论

iBatis和Hibernate的对比

 
阅读更多

我在最初的选型的时候是打算选择 Hibernate 的,在研究的过程中发现了 iBatis,经过
分析比较之后我选择了 iBatis。现在我已经使用 iBatis 完成了一个中小型的项目。这个
项目在性能、可维护性、可扩展性方面都非常令我满意。

在这个过程中我也不断的与使用过或者正在使用 Hibernate 的人进行过探讨。而且我本身
也在不断的跟进 Hibernate 的发展。

最终,我的结论是 iBatis 的选择非常正确,而且越用越喜欢它了。

当然了,我对 Hibernate 的理解还是非常有限的,所以这里的关于 Hibernate 的一些观
点的错误之处希望能够得到 Hibernate 高手的指正。


1. iBatis 易于掌握。拿来文档看半天到两天就可以掌握了。
<wbr><wbr> Hibernate 可能需要 3 倍以上的时间来掌握。<br><wbr><wbr><br> 2. iBatis 更容易进行 sql 的 优化。<br><br><wbr><wbr> 这个应该大家都有共识了。另外 Hibernate 生成的 sql 也实在是太难看了。鉴<br><wbr><wbr> 于有的朋友提到了 sql 不太重要。我想在这里强调一下我的经验,一般系统性能<br><wbr><wbr> 的瓶颈都在数据库上。所以这一点是 iBatis 非常重要的一个优势。<br><wbr><wbr><br> 3. iBatis 可以进行细粒度的优化<br><br><wbr><wbr> 3.1 比如说我有一个表,这个表有几个或者几十个字段,我需要更新其中<br><wbr><wbr><wbr><wbr><wbr><wbr> 的一个字段,iBatis 很简单,执行一个sql<br><wbr><wbr><wbr><wbr><wbr><wbr> UPDATE TABLE_A SET column_1=#column_1# WHERE id=#id#<br><wbr><wbr><wbr><wbr><wbr><wbr> 但是用 Hibernate 的话就比较麻烦了,缺省的情况下 hibernate 会更新所有字段。<br><wbr><wbr><wbr><wbr><wbr><wbr> 当然我记得 hibernate 有一个选项可以控制只保存修改过的字段,但是我不太确<br><wbr><wbr><wbr><wbr><wbr><wbr> 定这个功能的负面效果。<br><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr> 3.2 我需要列出一个表的部分内容,用 iBatis 的时候,这里面的好处是可以少从数据<br><wbr><wbr><wbr><wbr> 库读很多数据,节省流量<br><wbr><wbr><wbr><wbr><wbr><wbr> SELECT ID, NAME FROM TABLE_WITH_A_LOT_OF_COLUMN WHERE ...<br><br><wbr><wbr><wbr><wbr> 3.2.1 一般情况下<br><wbr><wbr><wbr><wbr> Hibernate 会把所有的字段都选出来。比如说有一个上面表有8个字段,<br><wbr><wbr><wbr><wbr> 其中有一两个比较大的字段,varchar(255)/text。上面的场景中我为什么要把他<br><wbr><wbr><wbr><wbr> 们也选出来呢?<br><br><wbr><wbr><wbr><wbr> 3.2.2 用 hibernate 的话,你又不能把这两个不需要的字段设置为 lazy load,因<br><wbr><wbr><wbr><wbr> 为还有很多地方需要一次把整个 domain object 加载出来。这个时候就能显现出<br><wbr><wbr><wbr><wbr> ibatis 的好处了<br><br><wbr><wbr><wbr><wbr> 3.2.3 Hibernate 还有一个方案,就是生成 javabean/map/object[](感谢<br><wbr><wbr><wbr><wbr> leelun/cjmm),但是这样的话就可能会产生大量的多余 class。map/object[] 的方式<br><wbr><wbr><wbr><wbr> 应该不错,我比较喜欢这种方式。<br><wbr><wbr><wbr><wbr><wbr><wbr><br><wbr><wbr> 3.3 如果我需要更新一条记录(一个对象),如果使用 hibernate,需要现把对<br><wbr><wbr><wbr><wbr> 象 select 出来,然后再做 update。这对数据库来说就是两条 sql。而 iBatis<br><wbr><wbr><wbr><wbr> 只需要一条 update 的 sql 就可以了。减少一次与数据库的交互,对于性能的<br><wbr><wbr><wbr><wbr> 提升是非常重要。<br><br> 4. 开发方面<br><wbr><wbr> 4.1 开发效率上,我觉得两者应该差不多<br><wbr><wbr> 4.2 可维护性方面,我觉得 iBatis 更好一些。因为 iBatis 的 sql 都保存到<br><wbr><wbr><wbr><wbr><wbr><wbr> 单独的文件中。而 Hibernate 在有些情况下可能会在 java 代码中保存sql/hql。<br><br><br> 5. 运行效率<br><wbr><wbr> 5.1 在不考虑 cache 的情况下,iBatis 应该会比hibernate 快一些或者很多,根据实际情况会有所不同<wbr><br><br><br><wbr><wbr><wbr><wbr><wbr><wbr><br> 当然 iBatis 也有比较大的缺点<br> 1. 不同数据库类型的支持不好,如果你要开发的系统是要在对中数据间移植,那可能用 hibernate 比较好。<br> 2. 缺省的 cache 支持不好,但是 hibernate 的 cache 支持其实也不是很好,而且很复杂。尤其是对于大并发量的应用。所以我更倾向于自己管理 cache。</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

<wbr></wbr>

原帖地址:http://moonsee.iteye.com/blog/253226

分享到:
评论

相关推荐

    ibatis和hibernate的简单介绍

    ### ibatis和Hibernate的简单介绍 #### 一、ibatis简介 ibatis是Apache软件基金会的一个开源项目,它提供了一种轻量级的Java持久层框架。ibatis的核心功能是将SQL语句与Java代码分离,使开发人员可以更加专注于...

    iBatis和Hibernate的区别

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

    IBatisVSHibernate

    标题 "IBatisVSHibernate" 暗示了我们将探讨两个知名的Java持久层框架——IBatis和Hibernate之间的差异和特点。这两个工具都是用于简化数据库操作的框架,但在设计理念和使用方式上有所不同。 **IBatis** 是一个轻...

    Hibernate和IBatis对比

    ### Hibernate与iBATIS对比分析 #### 一、概述 在Java开发领域,尤其是在企业级应用开发中,ORM(Object Relational Mapping,对象关系映射)框架扮演着至关重要的角色。其中,Hibernate与iBATIS作为两种最为知名...

    hibernateVSibatis

    3. **开发与维护**:在开发效率上,二者相差不大,但iBatis的SQL保存于独立文件中,便于集中管理和维护,相较于Hibernate可能在Java代码中混合SQL/HQL,iBatis在可维护性方面略胜一筹。 ### 结论:选择的智慧 选择...

    ibatis教程,ibatis帮助文档

    三、iBATIS与Hibernate的对比 1. 映射关系:Hibernate提供了一种对象关系映射(ORM)机制,自动处理对象与数据库之间的转换,而iBATIS需要开发者手动编写SQL语句。 2. 开发效率:在相同需求下,iBATIS的工作量可能...

    hibernate_And_Ibatis.doc

    【hibernate 和 iBATIS 框架详解】 Hibernate 和 iBATIS 是两种流行的 Java 持久层框架,它们都致力于简化对象关系映射(ORM),将 Java 类对象与数据库表之间的交互变得更加便捷。然而,它们在实现方式和设计理念...

    HIbernate,Ibatis等持久层开发文档

    对比两者,Hibernate更加强调自动化和对象关系映射,而iBATIS则更注重SQL的灵活性和控制。在实际项目中,选择哪个框架通常取决于项目需求和团队熟悉度。Hibernate适合需要高度自动化和复杂对象关系映射的场景,而...

    ibatis jar 包

    **Ibatis与Hibernate的对比:** Ibatis和Hibernate都是ORM(对象关系映射)框架,但它们在设计理念上有所不同。Hibernate更倾向于全自动的ORM,提供了强大的对象关系映射功能,而Ibatis则更注重SQL的自由度,让...

    ibatis优缺点

    ### ibatis与Hibernate对比之优缺点分析 #### 一、简介 在Java开发领域中,持久层框架(ORM框架)的选择对于项目的成功至关重要。其中,ibatis(现更名为MyBatis)与Hibernate作为两种广为人知且应用广泛的持久层...

    IBATIS.pdf

    #### iBATIS与Hibernate对比 尽管iBATIS和Hibernate都能实现数据的持久化与检索,但它们在操作方式上存在显著差异。Hibernate采用了传统的对象关系映射(ORM)技术,能够自动将Java对象映射到数据库表,并自动生成...

    ibatis基础知识详解

    Ibatis与其他ORM框架对比 与Hibernate等全自动化ORM框架相比,Ibatis更轻量级,更注重SQL的自由度,适合对SQL有高度定制需求的项目。而Hibernate等框架则更强调对象关系映射,简化了对象与数据库表之间的转换。 ...

    mysql,jdbc详解,与ibatis对比。批量查询,分页处理。

    ### MySQL、JDBC详解及与iBatis对比 ...通过对MySQL的基本操作、JDBC的工作原理以及iBatis与JDBC的对比分析,我们可以更全面地理解数据库编程的关键概念和技术要点。希望本文能够帮助开发者们更加熟练地掌握这些技能。

    ibatis在web工程中的应用笔记

    二、MyBatis与Hibernate对比 文件“iBatis和Hibernate的区别.doc”可能包含更详细的对比分析,但我们可以简单概括如下: 1. 数据访问方式:MyBatis允许直接编写SQL,灵活性高,而Hibernate则是基于对象关系映射(ORM...

    ibatis 开发指南

    7. **与Hibernate的区别**:对比iBATIS和Hibernate的自动化程度,iBATIS更注重SQL的控制权,而Hibernate则提供了更全面的对象关系映射。此外,还会涉及性能、学习曲线和社区支持等方面的比较。 8. **最佳实践**:...

    spring3 ibatis整合实例

    Spring3 和 iBatis 整合是一个常见的Java企业级应用开发模式,主要用于构建灵活、可扩展的后端数据访问层。这个项目实例提供了一个详细的学习资源,帮助新手掌握这两种技术的融合。以下是对这个整合实例的详细解析:...

    ibatis和mybatis的前世今生.txt

    #### 四、ibatis与Hibernate的对比 - **iBATIS**:更适合那些需要精细控制SQL语句的场景,对于复杂的查询或更新操作具有更好的灵活性。 - **Hibernate**:更侧重于对象关系映射(ORM),能够更好地隐藏底层数据库...

    ibatis 总结

    这是关于ibatis 的一些总结, 其中包含ibatis 、hibernate、jdbc三者之间的性能对比,以及ibatis的配置

Global site tag (gtag.js) - Google Analytics