0 0

请教ibatis和hibernate选择0

新手学习web开发,数据层ibatis比较方便,hibernate有缓存等,感觉在大并发时应该不错,想试着啃这个大骨头,研究了几天,还一头雾水,请问有啥适合新手的教程没?

我的理解ibatis快速,适合小项目,大规模也可通过手段优化数据库等,hibernate开始麻烦点,访问量大后,也有缓存等组件来解决。

另请问mybatis和ibatis的区别?
2013年3月23日 20:38

14个答案 按时间排序 按投票排序

0 0

看使用者的水平!

2013年8月27日 15:34
0 0

用mybatis 吧 等你的系统长时间运转后,或者大并发,压力测试的时候你就知道hibernate 的痛苦了。
mybatis 也可以追加缓存。同样和可以和hibernate 一样用ehcache

hibernate 现在越来越沉重,但是对于如果项目迁移,ORM映射生成方面的确肯不错,最起码一个HQL ,我可以在各个数据库里跑。完全忽略数据库,但是性能。。长期运行后你会发现CPU..高的让人头疼。

mybatis 比ibatis 多了一些注解,很方便。除了轻量级以外,自己写SQL,方便,利于维护,你也可以用用mybatis 的自动生成帮助类 去生成一些底层基本的CURD

同样2000用户 ,百万条数据下。。 压力测试 你会有一种彻底放弃hibernate的痛苦。。

2013年8月06日 12:52
0 0

Hibernate理论上在大数据量高并发的业务环境下是没问题的,不过必须项目中有人对它具备足够的掌控力才行。如果是一般的项目,用用还是不错的,毕竟是优秀的对象关系映射框架,大多数情况下是不用关注SQL的编写的。
ibatis只是对SQL的简单封装,让你的JAVA代码更干净些,在有些需要利用到特定数据库特性的地方,就能发挥较大的作用。
ibatis和mybatis的区别上面有人讲了,新的版本更名为mybatis了。
另外,总结一句,这两者并不是矛盾体,你可以使用spring来结合使用(网上例子很多),效率要求不高的地方,使用hibernate来完成,效率要求高的地方使用ibatis来完成。

2013年8月06日 08:50
0 0

最早在项目中使用的是hibernate,后来设计自己的开发框架时,选择了myBatis。在我看来,二者之间最大的差异在于对数据的处理方式。hibernate是一个典型的ORM框架,关于ORM的概念不在这里赘述。而myBatis严格意义上不能算是一个ORM框架。

二者概念上的差异也就导致了使用方式和场景上的差异。hibernate对数据的操作是针对java对象的,即使在hql语句的书写方式也是面向对象式的。而myBatis虽然也可以将查询结果转换为对象,也可以将对象传值到sql中,但是myBatis更多的是一个面向接口和sql的框架,写的最多的就是sql和sql对应的接口。因此,相对于hibernate来说,myBatis由于开放了sql,对开发人员的sql要求更高,同时也提供了更高的sql灵活性,对于不适合以面向对象方式操作的数据或者行为(比如数据分析,高级sql查询等),使用mybatis是个更好的选择。


所以,二者的差异主要在使用场景上。在优化上,二者都支持缓存,而hibernate更是支持多级缓存,因此性能的差异主要在于使用的人和场景,而不在于数据量的大小。也就不存在大项目用hibernate,小项目用mybatis这种错误的认识。

2013年7月15日 22:48
0 0

引用

新手学习web开发,数据层ibatis比较方便,hibernate有缓存等,感觉在大并发时应该不错,想试着啃这个大骨头,研究了几天,还一头雾水,请问有啥适合新手的教程没?

我的理解ibatis快速,适合小项目,大规模也可通过手段优化数据库等,hibernate开始麻烦点,访问量大后,也有缓存等组件来解决。

另请问mybatis和ibatis的区别?


① 既然是新手,还没学走路就要飞了,跟以前的我很像,有点杞人忧天。试问国内有多少个系统是属于大并发的,又有几个人会接触到大并发处理。大并发的是你刚入门web的新手去处理的吗?⊙﹏⊙b汗死!!!

② ibatis大项目用多的是!反倒大项目hibernate见得少!很多大项目甚至都是用数据库的存储过程来完成的。

③ ibatis也有缓存! 大系统都靠缓存的话,那你内存得有多大?

④ 个人认为hibernate适合需求比较明确的项目,容易进行业务建模,适合采用ORM。但后期会让你崩溃的。业务部门的需求千变万化,过不了多久,你所谓的建模几乎不存在,尤其是用hibernate开发ERP,后期所谓的建模………………

2013年6月05日 11:42
0 0

1.
hibernate 重量级,复杂,完全的面向对象sql编程;适合互联网,简单的业务,互联网多些;
ibatis 相对轻量级,简单,半sql maping自动化编程,学习成本低;对复杂的业务,像电信,行业软件用的挺多的,而且那些系统要求写的sql多些,尤其是复杂的sql,用hiberate的完全面向对象,反而麻烦,繁琐;
2.
mybatis 是ibatis2版本之后的版本3,比ibatis注解,sql更好用些!
hibernate 和ibatis都支持缓存,但hibernate的缓存设计和支持更好,强大些!

2013年4月27日 11:40
0 0

Hibernate功能强大, 如果模型设计得比较完善, 会少一些开发量.比较适合用在没有遗留问题的企业级项目. 由于Hibernate学习成本比较高, 所以在架构选型时要慎重 .


Ibatis相对简单, 每天sql都是程序员自己写的. 在互联网网公司, 使用ibatis比较多. 因为ibaits的sql是程序员自己写的, 比较好优化, DBA也更好做review. PS: 阿里系每个子公司用ibaits, 所以不要说ibatis不合适大型项目.

Mybatis是ibaits的后续版本. 因为ibatis不再把代码维护在Apache, 而是放在google code上面去了, 可能是由于版本或其他的原因需要改名.

2013年4月18日 23:58
0 0

1.hibernate 军规级别,相当强大,重量级,给它最标准的定义:面向对象的持久化框架,支持sql及hql,但,复杂度高,入门简单,学精复杂。
2.mybatis 支持面向对象编程,但不能说是全面向对象,对面向对象中关系的处理不够强悍。
3.企业选择
两者都可以选择,hibernate针对简单业务,开发速度快,mybatis针对复杂业务,对程序员要求并不高,hibernate没专家,最好不要上项目。
望采纳。

2013年4月17日 16:08
0 0

对于复杂sql或者存储过程调用,Hibernate对于复杂或者数据量大,性能要求高的或者多表级联查询时性能没有ibatis高,
但是,hibernate采用全自动的ORM映射工具,将实体类与表对应,自动生成sql文,而ibatis需要自己动手写sql,还要有xml配置文件。
具体的使用还是要根据业务或者需求进行合理使用。各有优势

2013年4月12日 18:38
0 0

我觉得,如果如果系统是侧重于统计分析的话,建议使用mybatis更适合,因为这个场合下面会运用很多原生sql的使用,如果用hql反而人为的制造了不必要的麻烦。反之,使用hibernate会简化不少开发量。仅供参考。

2013年3月27日 23:43
0 0

mybatis支持灵活的sql拼写,如果使用它很难出现把查询参数拼到sql的情况。
mybatis缓存功能比较弱,它只支持sql和查询参数级的缓存

hibernate orm映射功能强大,利用映射文件容易实现很复杂的orm映射,不过映射关系过于复杂的话这些代码也难以维护。不注意的话容易出现把查询参数拼到sql、hql的情况,会降低效率。
hibernate缓存强大

2013年3月25日 10:58
0 0

我记得iBatis好像也支持缓存。
我的理解是:
iBatis更适合
  1、只能使用procedure
  2、对性能要求高
  3、已有的schema不能很方便的进行ORM配置。
Hibernate更适合
  1、快速开发
  2、新系统

2013年3月24日 21:14
0 0

另请问mybatis和ibatis的区别?
两个本来就是一个,本来叫ibatis的,后面脱离apache 社区之后,
才开始改名mybatis的。

2013年3月24日 16:33
0 0

如果用mybatis你可以自己写缓存来提高访问效率

2013年3月24日 11:40

相关推荐

Global site tag (gtag.js) - Google Analytics