ibatas和hibernate哪个更好?
发布网友
发布时间:2022-04-22 22:55
我来回答
共4个回答
热心网友
时间:2022-04-12 00:53
ibatas和hibernate优点缺点
1.优点
简单:
易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
实用:
提供了数据映射功能,提供了对底层数据访问的封装(例如ado.net),提供了框架,可以使我们更容易的开发和配置我们的dal层。
灵活:
通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
功能完整:
提供了连接管理,缓存支持,线程支持,(分布式)事物管理,通过配置作关系对象映射等数据访问层需要解决的问题。提供了支持,并在框架中封装了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的优势,我们需要做一些额外工作,比如最好设计接口,需要将业务层实体和对实 体的访问放在不同的工程中,同时需要维护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作为框架时,我 们可以同时使用Hibernate,ado.net和datamapper(ibatisnet的核心组件),那样将会使风险降到最低,并且整个系统的 框架比较合理。
另外,利用ibatis可以统一编码风格,节约开发成本,大家不会再把精力浪费到分页 连接池 主键生成等地方了,可以集中精力进行业务组件的编写。
综上: 很多时候我们要在是自己开发框架和选用第三方框架和选用什么样的框架问题上进行综合考虑。考虑的标准当然是项目的当前情况和我们希望达到目的的一个平衡。
ibatis只是封装了数据访问层,替我们做了部分的对象关系映射。但我们的代价是必须要写xml配置文件,相对于Hibernate我们还要写很多 sql。Hibernate通过工具直接从数据库模式生成实体类和基本的配置文件,而且大部分情况下不需要我们写sql,会较大的提升开发效率。但这些也 有很多的局限性,尤其是对环境的要求较高(数据库设计,对象设计,团队的协作等)。
个人感觉ibatis对项目比较有意义的地方在于它小巧灵活,可扩展,封装了数据访问层(事务,缓存,异常,日志),并提供了框架支持。
利用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提供的思路是我们应该仔细考虑的
热心网友
时间:2022-04-12 02:11
如果项目需要操作大型数据建议使用ibatas.否则hibernate.
hibernate对象和数据库转换操作简单。但是不适合大数据查询.
项目中曾经遇到过40W条数据hibernate造成无响应的情况,当然,已经处理过数据库缓存的情况下.
简单的说,ibatas对sql支持更灵活.
热心网友
时间:2022-04-12 03:45
个人感觉hibernata好些,可以上一些网站看看!
热心网友
时间:2022-04-12 05:37
没有更好,只有更适合。
两个可以混合使用的
ibatis和hibernate的区别
在这种情况下iBATIS会有更好的可控性和表现。现在就市场来说,hibernate的需求要大于ibatas的需求,而hibernate对个人能力的要求更高,即使公司使用ibatas,你在hibernate的基础上也能快速掌握。在二者之间如果选择学习的话建议hibernate,上面的理由想已经足够清楚了。希望能够对你有所帮助。
labtechgroup
LabTech Group,即北京莱伯泰科仪器股份有限公司,是业界领先的实验室科学仪器与解决方案提供商。我们专注于分析测试仪器的研发、生产和销售,致力于为全球科研工作者、高校及企业实验室提供高性能、高稳定性的产品与服务。通过持续的技术创新与品质提升,LabTech Group在样品前处理、光谱分析、色谱分析等领域不断突破,助力科学探索与产业升级,携手客户共创科研新篇章。北京莱伯泰科仪器股份有限公司北京莱伯泰科仪器股份有限公司成立于2002年,是一家专业从事实验分析仪器的研发、生产和销售的科技型公司。莱伯泰科自成立之初便致力于为环境检测、食品安全、疾病控制、半导体检测、生命科学、能源化工、核环保、...
ibatis、hibernate 、JPA 的优缺点
1)ibatis没有hibernate封装的程度高,我个人偏向于Ibatis,你懂得,如果不是为了工作效率,我宁愿JDBC 2)hibernate不适合做大型项目。网上对hibernate的争议很大,我个人觉得hibernatre不适合做大型项目,我说的大型是指那些关系模型很复杂的项目。但是hibernate比较适合初学者用来做项目或者是小型项目。3)jpa...
jdbc,hibernate,ibatis三者的优缺点?
JDBC:SQL语句自己写,开发效率最低,但是使用最灵活,一般被大型项目所采用。Hibernate:SQL语句都被封装,开发效率高,但是使用不灵活,一般被小型项目采用。iBatis:介于两者之间,应用也比较广泛。
Hibernate与IBatis的优缺点及可行性分析
如果使用dotnet并且要选一个数据层框架 而系统中有相当一部分较复杂的sql 或数据库设计不合理 脏数据多 对性能和资源要求严格 ibatis 是一个比较不错的选择 他的那些缺点并不是致命的 而且也是有一些解决方案的 尤其是 当选用了ibatis的dataaccess作为dao框架时 我 们可以同时使用Hibernate 和datamapper(ibatisnet的...
ibatis和hibernate的区别
可维护性方面,我觉得iBatis更好一些。因为iBatis的sql都保存到单独的文件中。而Hibernate在有些情况下可能会在java代码中保存sql/hql。8) 运行效率 在不考虑cache的情况下,iBatis应该会比hibernate快一些或者很多(根据实际情况会有所不同)。9) 对不同数据库类型的支持。iBatis对不同数据库类型的支持...
hibernate和ibatis的区别
当系统维护或者二次开发,无法对数据库结构做到控制和修改,那ibatis的灵活性将比hibernate更适合 六.海量数据 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的sql语句(或存储过程)才能达到系统性能设计指标。在这种情况下ibatis会有更好的可控性和表现。七.自动化程度 ibatis...
Hibernate和iBatis、myBatis的区别?
首先Hiberante,iBatis,MyBatis都是对数据访问的封装,最终都是生成sql语句访问数据库。只不过Hibernate封装得比较全面,IBatis只是局部封装,懂Jdbc的程序员可以快速上手,而myBatis是近来流行的一种新的IBatis是对IBatis的升级,可以看着是升级版。
java流行的框架(java现在主流框架)
3、持久层框架选Hibernate和Ibatis。Hibernate自动化能力强,开发大型应用可以节约开发时间,ibatis小巧简洁,灵活。4、框架1:Spring框架该框架排名第一,因为它具有开发复杂Web应用程序的出色能力,而且,这些应用程序因性能突出而广受赞誉。它使Java开发人员能够轻松地创建企业级应用程序。Web应用程序开发人员...
hibernate与ibitas有什么区别
而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的 SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以 SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM实现的一种有益补充,ibatis 的出现显 得别具意义。
activiti5 为什么选择 ibatis
4.2 可维护性方面,我觉得 iBatis 更好一些。因为 iBatis 的 sql 都保存到 单独的文件中。而 Hibernate 在有些情况下可能会在 java 代码中保存 sql/hql。5. 运行效率 5.1 在不考虑 cache 的情况下,iBatis 应该会比hibernate 快一些或者很多 (根据实际情况会有所不同)。当然 iBatis 也有比较...