java新项目持久层ORM抉择: Hibernate or Mybatis ?
最近要做个新项目,一直在犹豫持久层框架到底是用hibernate还是mybatis呢(各位大牛若有其它更好的推荐,加5牛币)?
首先谈谈我对hibernate的感受吧!
之前的项目一直用hibernate,感觉开发效率还是不错的。但是有时候经常会出现一些莫名其妙的问题,搞的很郁闷!比如偶尔会锁表之类的,要我去排查问题真的是难啊;其次一个就是hibernate的关联关系,这个配置要是不好,就坑死了;还有一个就是我觉得用hibernate做比较复杂的报表的话有点麻烦。最后一个就是可能大部分人都认同的问题:hibernate越来越重了!
其实老实讲我对hibernate的熟练程度也一般,毕竟hibernate的门槛高啊。所以不是太复杂,比较简单的是没有问题的!
mybatis我觉得最大的好处就是sql可以直接控制,后期有问题优化什么的比较好!当然优点也是缺点,sql语句都要自己写,势必会影响到开发效率。
以上都是个人的拙见,重点是向大家请教请教!
现在新项目的架构是Spring + SpringMVC + MySQL + (Hibernate or Mybatis),项目对并发也是有比较高的要求的!
所以再次请教下大家(拒绝复制粘贴,请说说您自己的真实见解)。谢谢各位!
如果是企业级的项目,业务规则相比很复杂的话用hibernate来开发较好,对性能要求高的可以用native sql查询优化。
如果是互联网的项目建议用mybatis,因为业务规则简单,对查询的性能要求较高。
不过我建议你尝试下springdata jpa,最代码就是通过他来做的持久层框架,开发效率和执行性能感觉做的很中衡。
参考资料:
//我总结分享的关于jpa的查询demo
springdata jpa 1.7.0.RELEASE各种查询方法总结demo大全,通过junit测试
springdata jpa和和Hibernate相比较那个性能好一点
后续:熟练应用springdata jpa后你会发现查询其他类型的存储也会得心应手,比如redis,mongodb,springdata都有相应的支持springdata redis,sprindata mongodb,选择spring家族的框架还是很有持续力的。
比如:
Spring MVC+Freemarker+Bootstrap整合实现spring-data-redis增删改查的入门学习实例
推荐Mybatis ,至于开发效率问题,基本的增删改查,用mybatis-generator-core直接就可以生成,正如你自己说的,hibernate经常碰到些问题,不知道如何解决,以及性能问题
如果对hibernate特别熟悉,研究过源码,也可以考虑继续用hibernate,个人建议mybatis
- 等 最代码怎么获取牛币啊?
- 完 谁来告诉我最代码上线的时间,答对者给5牛币,先来先得
- 等 牛友们,大家好,你们做程序员多久了?现在还好吗?
- 完 在微信打开的页面里进行app下载
- 等 最代码2014年欢乐聚声会
- 完 mysql如何查询表数据并且对3个字段降序的SQL?
- 完 最代码牛币机制改革
- 完 成功的在bae上使用了自定义运行环境 jetty+nginx的组合,大家对jetty+nginx优化有哪些心得?
- 完 进来分享一下各位牛牛是如何加入最代码大家庭的?
- 等 为什么java BufferedImage类处理大图直接抛出内存溢出的异常?
- 等 最代码是否开发手机app客户端?
- 完 java程序员学习哪些java的技术?java有哪些框架?都能做哪方面的开发?
- 等 php格式网页文件怎么运行?
- 等 Java volatile值获取的问题
- 等 前端vue,拦截了登录后台后,返回的token,requests拦截token,但是发送请求的时候,就出现跨越异常
- 等 大专本科计算机科班怎么找到Java工作?
- 等 eclipse怎么把三个java swing游戏项目合成一个项目?
- 完 伙伴们,大家都有什么好的解压方式么,分享一下~
- 完 三四线城市,6、7k,运维工作,索然无味,想去辞职上培训,各位牛牛有什么建议嘛
- 等 jsp页面输入中文变成问号
- 等 JPA在线上运行一段时间后报错Caused by: java.lang.IncompatibleClassChangeError: null
- 等 PHP 这个规则用preg_match_all怎么写
- 等 大佬们,有没有知道Alfresco如何配置LDAP登录呢?
- 等 php的install目录是框架带的吗?