`
zengshaotao
  • 浏览: 788104 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Hibernate,Mybatis优缺点

 
阅读更多
1.优点
    简单:

    易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

    实用:

    提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了dao框架,可以使我们更容易的开发和配置我们的dal层。

    灵活:

    通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

    功能完整:

    提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了dao支持,并在dao框架中封装了ado.net,Hibernate和datamapper.增强系统的可维护性:通过提供dal层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

    2.缺点

    滞后性:

    还没有明确对。net2.0的支持。最新版本在2.0下编译可以,但有些单元测试不能通过。

    不成熟,工程实践较少:ibatisnet在实际项目中的使用较少。 只是理论上可行。

    半orm,工具支持较少:需要我们自己写sql,并且。net下还未发现可以自动生成业务层类和配置文件的工具,这点和Hibernate不一样,Hibernate会为我们的数据库直接产生sql,并有一些辅助工具。因此使用ibatis比Hibernate要多做一些工作。

    3.可行性

    没有最好的框架,只有最适合的框架。 存在的便是合理的,它存在就说明有它存在的道理。但它未必为我们存在。所以选择一个框架最主要的是看它对你有没有意义,意义有多大,是不是比其他框架带给 你的好处要多。没有绝对的优点也没有绝对的缺点,重要的是看在什么情况下讨论。

    上面说了部分的ibatis的优点和部分缺点。这些优点从理论上证明ibatis对任何数据持久层都合适,但未必是最好的选择。下面对上面的优缺点分别从两方面讨论。

    简单:

    我们都喜欢简单,简单意味着学习成本低,使用中出错的可能性低。同时,简单的东西一般来说功能不够强大。反过来,复杂的东西学习成本高,用起来不方便,并且团队没有很强的技术实力,一般不要使用。

    实用:

    解决了项目中需要解决的问题,这是任何实际工程中采用的框架和工具都应具有的性质,否则就不要拿到实际项目中来。

    灵活:

    灵活有两层意思,一种是简单易扩展,另一种是功能强大提供了很多选项。ibatis属于前者,Hibernate属于后者。两者各有优缺点。

    功能完整:

    ibatis的功能完整也是相对的,比我们自己开发的框架应该完整,但对比其他框架肯定也有一些解决不了的问题。

    增强系统的可维护性:利用ibatis可以做到sql和代码分离,可以设计出一个清晰的数据访问层(dal)。但项目架构是否科学合理,是否以维护,关键不在ibatis,因 为它只是一个数据层框架。但是我们也不得不清楚,要想发挥ibatis的优势,我们需要做一些额外工作,比如最好设计dao接口,需要将业务层实体和对实 体的访问放在不同的工程中,同时需要维护xml配置文件。

    滞后性:

    ibatis组现在还没有提到要支持。net2.0,很多人在。net2.0下使用ibatis都出现了问题。所以如果要使用。net2.0开发,ibatis不是一个好选择,还需要等待。

    不成熟:

    开源的东西很难说成熟,但一般比我们自己写的框架要成熟。由于我们可以拿到他的源代码,所以关键在于我们能否驾驭它。

    半orm,工具支持少:

    这注定了ibatis不能从本质上提升开发效率,我们需要自己写sql,写实体类,写配置文件。但这也是它优越的地方,它没有为我们做的他多,所以我们就 有更多的施展空间。而且它非常适合那些并不能完全控制数据库的系统和需要利用数据库本身提供的高级特性的统计查询系统的开发。

    使用ibatis需要自己写sql,由于我们的sql不可能完全符合sql标准,比起Hibernate产生的sql来,可移植性差。不过由于我们更改 数据库的可能性较小,对我们来说sql符合标准以便可以在迁移到不同服务器时代价最小并不是十分必要的。另一方面,Hibernate虽然可以屏蔽很多 数据库间的不同,但是却很难利用某些数据库的高级特性,比如oracle的分析统计函数。

    Hibernate不适合数据库模式不规范,约束不完整,需要大量复杂查询的系统,同时Hibernate的学习成本较高,完全掌握Hibernate也较困难,风险较大。

    自己写框架未必比ibatis的好,稳定,强大和可扩展。而且自己开发框架也需要较大的工作量。

    如果使用dotnet并且要选一个数据层框架,而系统中有相当一部分较复杂的sql,或数据库设计不合理,脏数据多,对性能和资源要求严格,ibatis 是一个比较不错的选择。他的那些缺点并不是致命的,而且也是有一些解决方案的。尤其是,当选用了ibatis的dataaccess作为dao框架时,我 们可以同时使用Hibernate,ado.net和datamapper(ibatisnet的核心组件),那样将会使风险降到最低,并且整个系统的 框架比较合理。

    另外,利用ibatis可以统一编码风格,节约开发成本,大家不会再把精力浪费到分页 连接池 主键生成等地方了,可以集中精力进行业务组件的编写。

    综上: 很多时候我们要在是自己开发框架和选用第三方框架和选用什么样的框架问题上进行综合考虑。考虑的标准当然是项目的当前情况和我们希望达到目的的一个平衡。

    ibatis只是封装了数据访问层,替我们做了部分的对象关系映射。但我们的代价是必须要写xml配置文件,相对于Hibernate我们还要写很多 sql.Hibernate通过工具直接从数据库模式生成实体类和基本的配置文件,而且大部分情况下不需要我们写sql,会较大的提升开发效率。但这些也 有很多的局限性,尤其是对环境的要求较高(数据库设计,对象设计,团队的协作等)。

    个人感觉ibatis对项目比较有意义的地方在于它小巧灵活,可扩展,封装了数据访问层(事务,缓存,异常,日志),并提供了dao框架支持。

    利用ibatis我们可以做到代码和sql的分离,只要sql能够解决的问题,ibatis就能帮我们较容易的解决,同时也使我们的项目对某一框架的依赖 性变小(因为ibatis是非侵入性的)。这将极大的降低项目风险,减少解决复杂问题的时间,使项目的维护变得简单。

    ibatis对于应用的修改,调试,扩充和维护将会变得容易自然。修改时,我们主要修改的是代表模型的实体对象,xml配置文件中的sql,和/或配置文 件的resultmap(很多时候是不需要的)。同时,sql和代码分离,我们不用在代码的stringbuffer的append方法之间寻找需要修改 的sql.配置文件中的sql便利了我们的调试和对sql的评审及以后的sql重用。

    利用一些框架在前期一般会拖慢开发效率。因为我们需要付出学习成本,很多时候,使用框架需要写很多配置文件,在使用不熟时开发速度较慢;同时利用框架往往 使系统代码量增大,比如model1和model2模型,开发效率应该还是model1快,四层的架构肯定比两层的代码量大。 但对于中后期开发和维护将会极大的提高效率。

    利用一些较完全的开发框架和代码生成工具,在前期会较大的提高开发效率,但在后期常常会拖慢进度,并有可能成为以后维护的梦魇。比如torque生成实体类和其对应的sql,虽大幅提高了效率,但修改负担较大。

    比较理想的开发方式是使用简单框架结合简单的代码生成工具。框架提供系统的基础服务,并规范开发。框架一方面提供了开发中某一方面的开发基础支持,比如数 据访问层,事务,日志,公用类,异常等。另一方面,也为开发定义了模式,定义了系统的基本轮廓。同时,通过简单的代码生成工具生成部分低级的代码。比如通 过工具从数据库模式生成实体类。这些类生成后我们可以自由修改。

    Hibernate是十分强大,比较完善的orm框架,不过这是它的优点也是它的缺点。 J2EE系统是否采用Hibernate3,是一个需要认真评估的问题。

    要想Hibernate工作的好,数据库的设计必须好。同时对于复杂的数据操作同时需要使用sql,Hibernate3对于直接使用sql的支持比Hibernate2要自然,这一点是可以接受的。

    Hibernate比较复杂,功能强大而灵活,要用好Hibernate确实不是很简单,当然spring框架提供了对Hibernate的封装,使Hibernate的使用变得简单了点。

    可以说ibatis在任何系统里都适用,但未必是最好选择。不过ibatis提供的思路是我们应该仔细考虑的。
分享到:
评论

相关推荐

    Hibernate与 MyBatis的比较

    标题中的“Hibernate与MyBatis的比较”是一个热门话题,主要关注的是两个Java持久层框架——Hibernate和MyBatis之间的差异、优缺点以及适用场景。这两个框架都是用于处理数据库操作,但它们的设计理念和使用方式有所...

    integer with spring struts hibernate mybatis jpa

    标题 "integer with spring struts hibernate mybatis jpa" 提示了这个压缩包可能包含一个集成使用Spring、...而对于有经验的开发者,这样的项目可以帮助他们更好地理解和比较不同的框架在实际项目中的应用和优缺点。

    hibernate与mybatis该如何选择

    在IT行业中,数据库操作是应用程序开发的核心部分,Hibernate和MyBatis是两个广泛使用的Java持久层框架,它们各自都有独特的优点和适用场景。选择合适的框架取决于项目需求、团队熟悉度以及性能考虑。以下是对这两个...

    ibatis 与hibernate之间的比较优点和缺点

    ### ibatis 与 hibernate 之间的比较:优点和缺点 #### 概述 在 Java 开发领域中,对象关系映射(Object Relational Mapping,简称 ORM)是一种将面向对象编程语言中的对象模型与数据库系统中的关系模型相互转换的...

    深入浅析Mybatis与Hibernate的区别与用途

    "深入浅析Mybatis与Hibernate的区别与用途" Mybatis和Hibernate都是orm数据库框架,但是它们有着很大的...Mybatis和Hibernate是两种不同的orm数据库框架,各有其优缺点。选择哪种框架取决于项目的需求和开发者的经验。

    Struts,Spring,Hibernate优缺点.

    ### Struts、Spring、Hibernate 的优缺点分析 #### 一、Struts 框架 **优点:** 1. **实现 MVC 架构模式:**Struts 通过 Model-View-Controller (MVC) 设计模式,使得业务逻辑与表示层分离,便于维护和扩展。 2. ...

    JDBC-Mybatis-Hibernate实例.7z

    Java操作MySQL数据库是Web开发中的常见任务,而JDBC(Java Database Connectivity)是Java与数据库交互的基础。...同时,通过对比和实践,你还可以深入理解每种技术的优缺点,以便在未来的工作中做出明智的选择。

    最强大的数据库框架,秒杀mybatis、mybatisplus、hibernate

    然而,Mybatis的缺点在于它需要手动处理结果集映射,对于大量重复的SQL操作,维护成本较高。 接着是MybatisPlus,它是Mybatis的一个扩展,旨在简化常见的CRUD操作。MybatisPlus提供了一套完善的API,包括快速插入、...

    Mybatis讲义

    #### 三、MyBatis 与 Hibernate 的比较 - **Hibernate**: 作为 ORM 框架的代表,Hibernate 提供了一整套解决方案,包括对象关系映射、事务管理等。优点在于避免了大量的 SQL 代码编写,但缺点是可能不够灵活,特别...

    SSH框架的优缺点

    下面我们将深入探讨SSH框架的优缺点。 **一、Struts2** Struts2是基于MVC设计模式的Web应用框架,它继承了Struts1的优点并解决了其不足。其主要优点包括: 1. **灵活的拦截器机制**:Struts2使用拦截器来处理请求,...

    day66-mybatis面试题

    MyBatis面试题往往会围绕其核心特性、应用场景、优缺点以及与其他框架如Hibernate的对比进行展开。下面我们详细解释给出的一些面试知识点: 1. MyBatis的特性:MyBatis是一个半ORM(对象关系映射)框架,提供了对象...

    三大框架的优缺点

    此外,Spring还提供了一整套的整合其他框架的API,如Hibernate、MyBatis等,实现无缝集成。不过,Spring的配置文件可能较为繁琐,对新手来说学习曲线较陡峭。 Hibernate是一个对象关系映射(ORM)框架,主要用于...

    springmvc_mybatis查询示例

    虽然主要使用了SpringMVC和MyBatis,但理解Hibernate可以帮助开发者对比不同ORM框架的优缺点。Hibernate是一个完整的对象关系映射(ORM)解决方案,提供了对JDBC的封装,使得Java对象可以直接操作数据库。 总的来说...

    MyBatis面试题(2020最新版)陆小马功钟浩.pdf

    MyBatis的半自动ORM特性意味着,相比于全自动的ORM映射工具如Hibernate,MyBatis在处理关联对象或集合对象时,需要开发者手动编写SQL语句。这种半自动的特性为开发者提供了更大的灵活性,尤其是在需要精确控制SQL...

    《Mybatis应用技术》复习资料.doc

    #### 六、MyBatis 的优缺点及其适用场合 **优点**: 1. **SQL 语句编程**: MyBatis 基于 SQL 语句编程,允许开发者直接编写 SQL 语句,灵活性较高。 2. **减少代码量**: 与 JDBC 相比,MyBatis 可以减少大量的冗余...

    MyBatis的27道面试题

    本篇文章对MyBatis进行了27个问题的梳理,深入探讨了该框架的应用场景、优缺点、与Hibernate的区别、动态SQL的用法、缓存机制等多方面内容。 首先,MyBatis是一个半自动化的ORM框架,它内部封装了JDBC操作,开发者...

    Mybatis和JPA区别表格详细比较.docx

    - JPA 的缺点可能在于性能可能不如 Mybatis,因为 ORM 会引入额外的映射开销,而且在处理复杂、高性能需求时,可能需要编写原生 SQL。 总结起来,Mybatis 更适合需要高度定制和控制 SQL 的场合,而 JPA 则更适合...

    基于Java 通用数据访问组件,基于mybatis、spring jdbc、hibernate.zip

    这三种技术各有优缺点。MyBatis轻量级且灵活,适合需要精细化控制SQL的场景;Spring JDBC则提供了更好的事务管理和异常处理;而Hibernate则在对象关系映射上做得非常出色,对于复杂的企业级应用更为适用。 在实际...

    ibatis优缺点

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

    mybatis.docx

    - JDBC的缺点:代码繁琐,易出错,不易维护,这是MyBatis出现的主要原因。 3. MyBatis 概述 - MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,解决了JDBC的繁琐操作问题。 - MyBatis...

Global site tag (gtag.js) - Google Analytics