{eval=Array;=+count(Array);}
主要是hibernate提倡以面向对象的方式操作数据库,SQL都是自动生成的,有些复杂的查询orm生成的SQL不会命中索引,导致查询性能不高。一切起源于杰克马提出的去ioe运动,根本原因是没钱就疯狂压榨程序员。
1.国内基本都学过SQL,而且写SQL很方便。
2.国内大多数是“面向数据库编程”
3.JPA的表连接太难懂,国内对于ORM的思想还是停留在JDBC
4.Mybatis更易于维护,面对不稳定的国内环境更适合
1.hibernate对sql做了一层封装转换变成了hql,sql对程序员来说是最直观的,hql又包了一层,感觉别扭。
2.都要生成一通xml,hibernate没优势啊,mybatis一些插件单表不用xml了,维护方便啊。
3.国内项目业务复杂,mybatis更具有灵活性。插件丰富tk.mybatis、mybatis-plus大大降低了开发成本。
4.MyBatis可以进行更为细致的SQL优化,可以减少查询字段。
5.MyBatis容易掌握,而Hibernate门槛较高。
6.缓存问题(这一点我说得不一定对),话说hibernate比mybatis更好使用,需要注意得地方少。但是,但是,但是啊我觉得这只是对单机项目吧,目前多节点项目都用redis作为缓存啊,这就使的架构师选择mybatis时更加没什么犹豫了。
7.国内开源项目基本都是集成得mybatis,氛围就是这样。用hibernate的都是一些老项目,公司内部的不开源的,基本的架构设计和目前的潮流格格不入了。国内的培训机构基本都时ssm流。
8.MyBatis相对于hibernate的缺点渐渐被弥补是关键,MyBatis的代码生成器拓展起来真的很方便。
9.MyBatis的批量保存使用要注意
国内有段时间也流行过hibernate,但大多到后期,觉的不好优化。还是觉的mybatis可控,符合国情呗,但为了对付mybatis这个半成品,业界也推出了不少增强框架:mybatis plus, tk mybatis, mybatis enhance。 这些产品有不少优点,但也都没有办法彻底解决问题。
最近有个新兴起的增强框架, fluent mybatis,吸收很多框架的优点,既有jpa的方便,又保持了可以自己编写sql的原始掌控能力。
同时有很多增强的特性:分页处理,租房处理,嵌套查询,联表查询,多数据库兼容处理,fluent语法。
https://gitee.com/fluent-mybatis/fluent-mybatis
https://mp.weixin.qq.com/s/jlcWt_1zbksDgncVr64nqA
国内人多,用户量大,必须要mybatis来优化sql。国外大部分网站人不多,hibernate更效率,国外的大型网站依然是mybatis,不过嘛大型毕竟只有那几家,所以国外hibernate是主流。
因为中国人多,数据量大,业务变化快,设计人员水平问题,时间紧,这些层层叠加起来就让头部程序员选择更灵活的mybatis,然后他们写出各种文档,后辈们自然跟风,难道我放着中文不看去看英文资料?
1:持久层只是个工具,不要太在意。
2:中西方思考方式还是有比较大的差已的,不要以自己当前的环境考虑别人的选择
3:如果是数据库编程为主的团队,mybatis还是不错的,毕竟这种团队选择它,不是自己决定的,而是市场环境之必然
0
回答0
回答3
回答0
回答0
回答1
回答0
回答10
回答0
回答0
回答