Allen梅川酷子的gravatar头像
Allen梅川酷子 2016-01-07 09:32:01

java新项目持久层ORM抉择: Hibernate or Mybatis ?

最近要做个新项目,一直在犹豫持久层框架到底是用hibernate还是mybatis呢(各位大牛若有其它更好的推荐,加5牛币)?

首先谈谈我对hibernate的感受吧!

之前的项目一直用hibernate,感觉开发效率还是不错的。但是有时候经常会出现一些莫名其妙的问题,搞的很郁闷!比如偶尔会锁表之类的,要我去排查问题真的是难啊;其次一个就是hibernate的关联关系,这个配置要是不好,就坑死了;还有一个就是我觉得用hibernate做比较复杂的报表的话有点麻烦。最后一个就是可能大部分人都认同的问题:hibernate越来越重了!

其实老实讲我对hibernate的熟练程度也一般,毕竟hibernate的门槛高啊。所以不是太复杂,比较简单的是没有问题的!

mybatis我觉得最大的好处就是sql可以直接控制,后期有问题优化什么的比较好!当然优点也是缺点,sql语句都要自己写,势必会影响到开发效率。

 

以上都是个人的拙见,重点是向大家请教请教!

现在新项目的架构是Spring + SpringMVC + MySQL + (Hibernate or Mybatis),项目对并发也是有比较高的要求的!

所以再次请教下大家(拒绝复制粘贴,请说说您自己的真实见解)。谢谢各位!

所有回答列表(4)
最代码官方的gravatar头像
最代码官方  LV167 2016年1月7日

如果是企业级的项目,业务规则相比很复杂的话用hibernate来开发较好,对性能要求高的可以用native sql查询优化。

如果是互联网的项目建议用mybatis,因为业务规则简单,对查询的性能要求较高。

不过我建议你尝试下springdata jpa,最代码就是通过他来做的持久层框架,开发效率和执行性能感觉做的很中衡。

参考资料:

//我总结分享的关于jpa的查询demo

springdata jpa 1.7.0.RELEASE各种查询方法总结demo大全,通过junit测试

分享一份完整的spring data jpa demo代码

springdata jpa源码学习实例

springdata jpa和和Hibernate相比较那个性能好一点

hibernate与jpa有什么区别和联系?

后续:熟练应用springdata jpa后你会发现查询其他类型的存储也会得心应手,比如redis,mongodb,springdata都有相应的支持springdata redis,sprindata mongodb,选择spring家族的框架还是很有持续力的。

比如:

Spring MVC+Freemarker+Bootstrap整合实现spring-data-redis增删改查的入门学习实例

spring+springdata redis入门教程实现java端调用redis lua脚本片段和lua脚本文件

redis源码学习实例

评论(2) 最佳答案
cwfreebird的gravatar头像
cwfreebird 2016年1月7日

推荐Mybatis ,至于开发效率问题,基本的增删改查,用mybatis-generator-core直接就可以生成,正如你自己说的,hibernate经常碰到些问题,不知道如何解决,以及性能问题

如果对hibernate特别熟悉,研究过源码,也可以考虑继续用hibernate,个人建议mybatis

liu9403的gravatar头像
liu9403  LV3 2016年1月8日

推荐hibernate,用上注解版本,开发效率老高了,mybatis还要自己写SQL,麻烦。hibernate即面向对象又可自定SQL,不要太方便。

星空下的筱晨的gravatar头像
星空下的筱晨  LV3 2016年1月18日

推荐Mybatis 对于一个熟练掌握SQL的人拼出SQL直接返回结果减轻前台压力,而且Mybatis灵活效率也高需求变更的时候yeg 也改的更方便 还有我觉得 DB 后台 前台 均衡一下 反应速度快 效果更好 

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友