MyBatis为什么在国内相当流行?

在java的orm方面可以说是hibernate和mybatis占据大多数市场。国内现在逐渐流行mybatis这种半自动的orm。mybatis虽然很…
关注者
1,518
被浏览
1,167,974
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

我觉得是因为MyBatis省事儿。

曾经问过一些比较有经验的同事,基本都提到了缓存这一点。

个人愚见,Hibernate要玩好,应该是:

  1. L1, L2的cache得会调教,这个我也答不上来很详细的,网上有不少文章
  2. Criteria的各种API和配置以及背后对应的数据库层面的含义需要很明白,当然部分功能可以写HQL完成,不一定要完全用Criteria API
  3. 像ManyToMany呀,orphan呀,JoinTable之类的参数配置要熟悉;如果可以直接写SQL应该会省一点事情,hibernate需要你通过配置告诉它的Engine,它翻译到数据库,这就需要你比较懂Hibernate的机制了。
  4. Lazy和Eager,什么场景选哪个
  5. 由于一般不建议在Hibernate里写SQL,调优可能会是个问题。我记得用Spring的HibernateJpaVendorAdaptor结合SpringDataJPA的话,是没有接口拿Hibernate的原生session的,也就没法直接写SQL了

然后很多同事告诉我,Hibernate项目一大就撑不住了,但是我们并没有把我们用Hibernate的项目的DAL换成MyBatis,所以不敢说换了之后会怎么样。有兴趣可以看看<<High-Performance Java Persistence>>


也许,MyBatis只要开始的时候配置一次,然后Generator跑一下就好了?我觉得其实也不尽然,包括动态SQL,缓存等应该也是需要考虑的。不过可以直接写SQL,调优应该比较方便吧。

还有,我听到别人谈MyBatis的时候也会说它是ORM框架,怎么说呢,不算是完全的吧。