为什么老外不愿意用MyBatis

2023-10-20 10:10
文章标签 mybatis 愿意 老外

本文主要是介绍为什么老外不愿意用MyBatis,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

专注于Java领域优质技术号,欢迎关注

作者:codeasy

老外用MyBatis吗

昨天我在我在知乎看到了一张比较Hibernate和MyBatis使用情况的图,顺手发了条朋友圈:

为什么老外不愿意用MyBatis
Hibernate vs MyBatis ,谁能告诉我什么样的国情导致了这么大的差异?

结果有人质疑,有人感叹。

我开始没有想到会有人质疑这个结果,在我的直觉里,确实国外使用MyBatis的人很少(在国外的网站上很少看到MyBatis的文章,但JPA/Hibernate的文章经常看到)。所以今天早上我用google的trends验证了一下,上面的以及下面的这些比较图,都可以访问 https://trends.google.com/trends/explore?q=%2Fm%2F04t80p,MyBatis 来看到。

从下面这个对比来看,MyBatis的关注主要集中在中日韩。

为什么老外不愿意用MyBatis

从全球的的比例来看,是这样的:

为什么老外不愿意用MyBatis

上面是基于google查询的数据计算出来的,如果基于youtube,那结果是这样的:

为什么老外不愿意用MyBatis

从以上的结果来看,在国外,准确地说,在中日韩之外的大部分地区,JPA/Hibernate完胜MyBatis,但在国内却完全相反,But Why?

老外为什么不用MyBatis

为什么会这样呢?我也不知道。一些朋友发表了自己的想法:

为什么老外不愿意用MyBatis

回复基本上分两种:

  • 青年程序员都在质疑这个图的可信度
  • 中老年程序员都在感叹国外其实更注重开发效率和面向对象的分析和设计

有个朋友说的非常好:

窃以为,唯独神州大量使用Mybatis,主要看重它不强化业务建模地搞表。造成的后果是,宁可自己写SQL也不意义花力气使用OOAD思维方式梳理业务并建模。而hibernate是OOAD建模后的自然延伸

好吧,下面是我个人的观点:

  • 确实,和对OOAD的重视有关,我在做DDD战术落地的时候,用MyBatis非常蹩脚,用JPA/Hibernate会好很多。
  • JPA/Hibernate比较复杂,团队中要有人Hold住它,否则及其容易踩坑;另外,真要使用,建议使用它的一个功能子集,不要所有功能都用。也可以尝试使用更简单EBean ORM。
  • JPA/Hibernate对分库分表的支持有一下坑。虽然,使用Shareding-JDBC或MyCat等技术,可以不关心分库分表,但是,JPA/Hibernate在某些情况下(比如加载子集合的时候)可能会不带分区键。国外分库分表的少,国内几乎是标配。
  • 国内做互联网的Java程序很多都是拷贝阿里的,阿里一开始用例iBatis(日本韩国是怎么回事呢)。大量的老系统都是基于iBatis/MyBatis的,市场上对MyBatis熟悉的人才更多,招聘和培训更容易,有的青年程序员以为“MyBatis早已统一全球了”就是一个很好的证明。

还有别的原因吗?大家可以补充。

这篇关于为什么老外不愿意用MyBatis的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/246441

相关文章

持久层 技术选型如何决策?JPA,Hibernate,ibatis(mybatis)

转自:http://t.51jdy.cn/thread-259-1-1.html 持久层 是一个项目 后台 最重要的部分。他直接 决定了 数据读写的性能,业务编写的复杂度,数据结构(对象结构)等问题。 因此 架构师在考虑 使用那个持久层框架的时候 要考虑清楚。 选择的 标准: 1,项目的场景。 2,团队的技能掌握情况。 3,开发周期(开发效率)。 传统的 业务系统,通常业

MyBatis-Plus常用注解详解与实战应用

MyBatis-Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它提供了大量的常用注解,使得开发者能够更方便地进行数据库操作。 MyBatis-Plus 提供的注解可以帮我们解决一些数据库与实体之间相互映射的问题。 @TableName @TableName 用来指定表名 在使用 MyBatis-Plus 实现基本的 C

MyBatis系列之分页插件及问题

概述 无论是C端产品页面,还是后台系统页面,不可能一次性将全部数据加载出来。后台系统一般都是PC端登录,用Table组件(如Ant Design Table)渲染展示数据,可点击列表的下一页(或指定某一页)查看数据。C端产品如App,在下滑时可查看更多数据,看起来像是一次性加载数据,实际上也是分批请求后台系统获取数据。而这,就是分页功能。 如果没有使用Hibernate或MyBatis这样的O

【MyBatis学习8】MyBatis中的二级缓存

1. 二级缓存的原理   前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的。为了更加清楚的描述二级缓存,先来看一个示意图:      从图中可以看出: sqlSession1去查询用户id为1的用户信息,查询到用户信息会将查询数据存储到该UserMapper的二级缓存中

【MyBatis学习7】MyBatis中的一级缓存

缓存的作用是减轻数据库的压力,提高数据库的性能的。mybatis中提供了一级缓存和二级缓存,先来看一下两个缓存的示意图:    从图中可以看出: 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。二级缓存是mappe

springboot+vue+mybatis旅游管理+PPT+论文+讲解+售后

随着人民生活水平的提高,旅游业已经越来越大众化,而旅游业的核心是信息,不论是对旅游管理部门、对旅游企业,或是对旅游者而言,有效的获取旅游信息,都显得特别重要.旅游管理系统将使旅游相关信息管理工作规范化、信息化、程序化,提供旅游景点、旅游线路,旅游新闻等服务本文以jsp为开发技术,实现了一个旅游网站系统。旅游网站系统的主要使用者分为管理员和用户,管理员权限如下;主页、个人中心、景点分类管理、景点信息

spring(一)--spring/springmvc/spring+hibernate(mybatis)配置文件

这篇文章用来总结一下spring,springmvc,spring+mybatis,spring+hibernate的配置文件 1.web.xml 要使用spring,必须在web.xml中定义分发器等信息,基本的配置信息如下: <?xml version="1.0" encoding= "UTF-8"?><web-app version= "3.0"xmlns="http://java.

Mybatis-映射文件中select标签resultType属性的使用

数据库的最最基本操作“增删改查”,“查”是最复杂的,有各种各样的查询,所以对应到Mybatis中的select标签也是这四个操作中最复杂的 resultType属性的使用 1.返回的结果是List集合的类型 select标签里的resultType类型设置为List集合里的元素类型 2.返回一个Map集合 key是列名称,value是列对应的值 3.返回的查询结果也是Map集合

三、MyBatis实践:提高持久层数据处理效率

三、MyBatis实践:提高持久层数据处理效率 目录 一、Mybatis简介 1.1 简介1.2 持久层框架对比1.3 快速入门(基于Mybatis3方式) 二、MyBatis基本使用 2.1 向SQL语句传参 2.1.1 mybatis日志输出配置2.1.2 #{}形式2.1.3 ${}形式 2.2 数据输入 2.2.1 Mybatis总体机制概括2.2.2 概念说明2.2.3 单个简单类型

使用MyBatis Generator自动代码生成器简化Java持久层开发

在Web开发中,数据访问层(DAO层)的编码工作往往重复且繁琐,尤其是在处理数据库表与Java对象之间的映射时。MyBatis Generator是一款强大的代码生成工具,它能自动生成DAO接口、Mapper XML文件和实体类,极大地提升了开发效率。本文将详细介绍如何在Maven项目中集成MyBatis Generator,并通过一个示例演示其配置过程。 一、POM.xml中添加MyBatis