问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hibernate和ibatis的区别?

发布网友 发布时间:2022-04-22 22:55

我来回答

4个回答

热心网友 时间:2023-07-09 18:50

Hibernate的特点: Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。
iBATIS的特点: iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目来说,相当完美。iBATIS的缺点就是框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。当系统属于二次开发,无法对数据库结构做到控制和修改,那iBATIS的灵活性将比Hibernate更适合。系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。在这种情况下iBATIS会有更好的可控性和表现。 对于实际的开发进行的比较: 1. iBATIS需要手写sql语句,也可以生成一部分,Hibernate则基本上可以自动生成,偶尔会写一些Hql。同样的需求,iBATIS的工作量比Hibernate要大很多。类似的,如果涉及到数据库字段的修改,Hibernate修改的地方很少,而iBATIS要把那些sql mapping的地方一一修改。 2. iBatis 可以进行细粒度的优化 比如说我有一个表,这个表有几个或者几十个字段,我需要更新其中的一个字段,iBatis 很简单,执行一个sql UPDATE TABLE_A SET column_1=#column_1# WHERE id=#id# 但是用 Hibernate 的话就比较麻烦了,缺省的情况下 hibernate 会更新所有字段。 当然我记得 hibernate 有一个选项可以控制只保存修改过的字段,但是我不太确定这个功能的负面效果。 例如:我需要列出一个表的部分内容,用 iBatis 的时候,这里面的好处是可以少从数据库读很多数据,节省流量SELECT ID, NAME FROM TABLE_WITH_A_LOT_OF_COLUMN WHERE ...一般情况下Hibernate 会把所有的字段都选出来。比如说有一个上面表有8个字段,其中有一两个比较大的字段,varchar(255)/text。上面的场景中我为什么要把他们也选出来呢?用hibernate 的话,你又不能把这两个不需要的字段设置为lazy load,因为还有很多地方需要一次把整个 domain object 加载出来。这个时候就能显现出ibatis 的好处了。如果我需要更新一条记录(一个对象),如果使用 hibernate,需要现把对象 select 出来,然后再做 update。这对数据库来说就是两条sql。而iBatis只需要一条update的sql就可以了。减少一次与数据库的交互,对于性能的提升是非常重要。 3. 开发方面: 开发效率上,我觉得两者应该差不多。可维护性方面,我觉得 iBatis 更好一些。因为 iBatis 的 sql 都保存到单独的文件中。而 Hibernate 在有些情况下可能会在 java 代码中保sql/hql。相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mapping”的ORM实现。 而iBATIS 的着力点,则在于POJO 与SQL之间的映射关系。也就是说,iBATIS并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。使用iBATIS 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL 语句,而iBATIS 则要求开发者编写具体的SQL 语句。相对Hibernate而言,iBATIS 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。 4. 运行效率 在不考虑 cache 的情况下,iBatis 应该会比hibernate 快一些或者很多。

引用文档: http://wenku.baidu.com/view/06c4486aaf1ffc4ffe47acfb.html
希望对你有帮助...

热心网友 时间:2023-07-09 18:50

Hibernate   Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序实用,也可以在Servlet/JSP的Web应用中使用,最具*意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Eclipse平台下的Hibernate辅助开发工具:【Hibernate Synchronizer】【MiddlegenIDE】   IBATIS   使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。

热心网友 时间:2023-07-09 18:51

看楼上的答案是长篇大论,我给你简短点吧,ibatis是手动写sql,本人公司使用的就是ibatis,虽然做开发的时候麻烦点,但是比hibernate灵活,不过,目前公司很少用,毕竟不是主流框架~hibernate目前java的主流框架,自动生成sql,把面向对象诠释的淋漓尽致,本人理解就到这里,有些不足的,还望高手指教

热心网友 时间:2023-07-09 18:52

hibernate是操作对象通过实体类和缓存机制操作数据库 用的也是hql语句 而ibatis则是实实在在的sql语句
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 EF英孚英语培训怎么样? 英孚英语好不好 EF英孚教育到底好不好 大佬们,麦芒7和荣耀10那个值得入手?2500以下的机子还有啥好推荐的么... 介绍几款2500元以前的手机 像素一定要高 其他的不做要求 近期想入手一部安卓手机,价格2200到2500左右…买HTC desire Z还是 三星... 笔记本忘记开机密码怎么办急死了 ibatis 和 hibernate 区别是什么呢, 都说大项目用hibernate回比较好,这是为什么呢? ibatas和hibernate哪个更好? jdbc,hibernate,ibatis三者的优缺点? 宠物蜥蜴吃什么? hiebernate和ibatis的区别 蜥蜴一般吃什么? 蜥蜴都喜欢吃什么? 蜥蜴吃什么食物? 蜥蜴吃什么?怎么喂养? 怎么养蜥蜴?它吃什么?需要喝水吗?!!! 蜂蜜为什么不会变质? 蜂蜜为什么不能用开水冲呢? 蜂蜜为什么不会坏 为什么蜂蜜不能用热水冲泡? 蜂蜜不结晶是怎么回事? 蜂蜜为什么不能放在开水里 为什么蜂蜜不易变质? 蜂蜜为什么永不变质? 为什么蜂蜜不可以放在冰箱里? 为什么纯天然的蜂蜜永远不会变质 如何强化企业内部控制措施 宠物蜥蜴 吃什么东西? 选用ibatis和hibernate的区别 提高企业内部控制水平的因素有哪些 ibatis与hibernate有什么区别啊? 你觉得IBatis(MyBatis) 和 HIbernate 哪个更好 企业应如何有效进行内部控制? Hibernate与iBatis的作用是什么,他们的区别是什么呢? 如何建立与完善企业内控制度,提升企业整体管理水平 Hibernate和iBatis、myBatis的区别? 如何加强内控管理 ibatis和hibernate的性能比较 ibatis 比较起hibernate更垃圾,但为什么还会有这么多人用? 浅谈如何加强内部控制 ibatis与hibernate的区别与使用场景 如何通过加强内部控制的几点思考 hibernetes mybatis 哪个好 如何加强企业内部管理,建立健全内控制度? 请大虾指点,hibernate和mybatis有什么区别? 最好分点详细介绍!!!谢谢... 如何提高企业内控管理?