现在网络上充斥着Jpa和Mybatis的一些对比。其实狭义上来说是hibernate和mybatis之间的比较。

例如:为什么感觉国内比较流行的 mybatis 在国外好像没人用的样子?

下面是一些截图

我不是一个喜欢评论的人,但这次我忍不住了。

  • hibernate 历史悠久并不代表过时,mybatis 这种方式就是未来吗?肯定不是。数据库就是用来存数据的,联表查询一大堆只能说明数据结构设计是有问题的,只是不愿承认或者心里没底而已,竟然还有人为了排序筛选数据,把复杂的运算放到关系型数据库去做,咋不上天呀,你这是叫格力的仓管大爷去替你拿材料,顺便让他根据各种因子计算新型压缩机的功率损耗。数据分析就不应该让关系型数据库做,这叫各司其职。
  • 这条语句的逻辑很有意思: UPDATE items SET price = 11 WHERE id = 1111,难道更新数据的时候不需要先取出数据再更新吗?对了,但凡有一点点的并发需求,无论是乐观锁还是悲观锁,都需要查询到最新的数据不是吗,悲观的加锁,乐观的核对 Version。至于全字段回写数据库,只是不知道有这种操作而已,hibernate 明明可以指定局部字段更新的好吗
  • 报表逻辑真实存在!这也许是一种让程序员通过关系数据库把数据分析这活也干了的一种借口吧,程序员可不要乐在其中哦
  • 微服务都大行其道了,还在狂钉外键,一大堆联表查询,sql 语句多达几百行,想想都忍不住噗。定义好业务边界,拆分成独立子系统吧,不然到了一定规模,别说 hibernate 干不了这活,mybatis 手写 sql 又咋样,同样干不了,不信给某个大厂的高流量数据钉个外键试试,看他们技术总监会不会拿刀追。小公司规模往往远没有达到那种撑不住的程度,大厂的高访问量业务数据早已不是这里逼逼的联表查询了。。。
  • 如果公司的数据库要从 mysql 转移到 Oracle、MongoDB、sqlserver 或者其他的数据库,用 mybatis 的,就问你慌不慌吧。spring 官方支持 jpa 并不是没有依据的,jpa 屏蔽了底层差异。
  • 既然 Jpa 用起来省心,没必要硬跟某些大厂的步伐,一步两步,似魔鬼的步伐!

就像淘宝技术十年里说的:

如用户模块,老的 member.taobao.com 继续维护,不添加新功能,新功能在新的模块上开发,跟老的模块共用一个数据库,开发完毕之后放到不同的应用集群上,另开一个域名 member1.taobao.com ,同时再替换老的功能,替换一个,就把老的模块上的功能关闭一个,逐渐把用户引导到 member1.taobao.com ,等所有的功能都替换完之后,关闭 member.taobao.com 上。从设计上来看,这个 member1 的二级域名应该是一个过渡状态,但我们把 member 域名的代码下线以后,发现很难把 member1 切换回 member,因为有些地方把链接写死了,于是后来很长时间里我们都是在用 member1.taobao.com 这样奇怪的域名。一年后,有另外一家互联网公司开始做电子商务了,我们发现他们的域名也叫 member1.xx.com 、auction1.xx.com ,复制得毫无保留,我们只能会心一笑。

没错,我用JPA,我也很喜欢JPA的设计哲学。但是同时我觉得Mybatis也是一个很好的框架,高效地解决了很多问题,满足了很多企业的需求,给一个大大的赞。

技术只是解决问题的一种方式、一种工具,选择哪种技术因人而异,存在即合理。

关于Jpa和Mybatis的一些看法的更多相关文章

  1. 实例对比 hibernate, spring data jpa, mybatis 选型参考

    原文: 最近重构以前写的服务,最大的一个变动是将mybatis切换为spring data jpa,切换的原因很简单,有两点:第一.它是spring的子项目能够和spring boot很好的融合,没有 ...

  2. Spring Data JPA、MyBatis还有Hibernate有什么区别

    原文:https://www.imooc.com/article/19754?block_id=tuijian_wz Spring Data JPA.MyBatis还有Hibernate有什么区别 2 ...

  3. spring jpa和mybatis整合

    spring jpa和mybatis整合 前一阵子接手了一个使用SpringBoot 和spring-data-jpa开发的项目 后期新加入一个小伙伴,表示jpa相比mybatis太难用,多表联合的查 ...

  4. Spring Data JPA 和MyBatis比较

    现在Dao持久层的解决方案中,大部分是采用Spring Data JPA或MyBatis解决方案,并且传统企业多用前者,互联网企业多用后者. Spring Data JPA 是Spring Data ...

  5. 持久层框架JPA与Mybatis该如何选型

    一.现状描述 目前java 持久层ORM框架应用最广泛的就是JPA和Mybatis.JPA只是一个ORM框架的规范, 对该规范的实现比较完整就是Spring Data JPA(底层基于Hibernat ...

  6. springboot整合jpa和mybatis实现主从复制

    百度多方参考终于配出我自己的了,以下仅供参考 参考https://www.cnblogs.com/cjsblog/p/9712457.html 代码 首先数据源配置 spring.datasource ...

  7. Spring同时集成JPA与Mybatis

    @ 目录 ORM Spring ORM Spring ORM 同时集成JPA与Mybatis 一.创建一个SpringBoot项目 二.建立用户信息登记表 三.Web应用项目集成mysql 四.添加S ...

  8. spring boot整合双持久层框架jpa、mybatis

    公司之前用的是spring boot + jpa,但由于jpa无法完美的解决某些动态查询问题,就使用的jdbcTemplate 动态封装SQL,由于代码相对复杂,可读性差,现准备再引入mybatis. ...

  9. springBoot数据库jpa+对接mybatis

    1  spring Data jpa hibernate引领数据访问技术,使用orm对象关系映射来进行数据库访问,通过模型和数据库进行映射,通过操作对象实现对数据库操作,把数据库相关操作从代码中独立出 ...

随机推荐

  1. Shiro+easyUI+SpringMVC实现登录认证

      最近在做一个小项目,其中认证这块使用shiro+SpringMVC+easyUI,因为easyUI在提交数据的时候使用的是ajax的异步提交,所以shiro在处理数据的时候需要重写FormAuth ...

  2. Spring中使用的设计模式

    目录 Spring使用的设计模式 1.单例模式 2.原型模式 3.模板模式 4.观察者模式 5.工厂模式 简单工厂模式 工厂方法模式 6.适配器模式 7.装饰者模式 8.代理模式 9.策略模式   S ...

  3. markdown文本转换word,pdf

    pandoc及下载和安装 pandoc是什么 pandoc是一个软件,是一个能把千奇百怪的文档格式互相转换的神器,是一把文档转换的瑞士军刀(swiss-army knife).不多说,放一张其官网(h ...

  4. 微信小程序组件minui在mac系统的使用注意事项

    1.mac系统使用npm 安装组件的时候,一定要注意mac系统的终端一定要用root用户操作. 具体的命令如下:sudo -i,然后提示输入系统的密码就进入了root操作用户. 2.然后就根据minu ...

  5. Linux 查找最大文件

    1.使用命令df -h 查看硬盘空间  2.使用命令du -h –max-depth=1 /var/log/* 查看/var/log路径下文件的大小 du -sh /* 查看哪个目录最大,一步一步的查 ...

  6. Kotlin 数组学习笔记

    创建数组 初始值为空的String数组 val arrayEmpty = emptyArray<String>() 长度为5,初始值为空的Int数组 val arrayEmpty = em ...

  7. Maven(十二)Maven 依赖详解

    依赖的传递性 注意1:在Eclipise创建的Maven项目,若依赖eclipse空间中其他自己创建的 的项目时,此时并不会报错,但是当执行mvn compile命令时还是会显示缺失败.所以依赖的其他 ...

  8. 委托(2).net 1.x中的委托

    上一篇已经演示了使用委托实现一个多语言问候的程序,这一篇文章来总结一下在.net 1.x中委托的使用方法. 既然委托是一个类型(class),那么它就要经历像类一个先声明,然后new一个对象,最后调用 ...

  9. Web前端 HTML知识总结

    HTML篇 一.HTML的概念 HTML:就是Hyper Text Markup Languaged的缩写,意思就是超文本标志语言 (超文本:功能比普通文本要强:标志语言:使用一组标签对内容进行描述的 ...

  10. Html和Css学习笔记-html进阶-div与span

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! 此篇博客是我的复习笔记,html和css学的时间太久了,忘得差不多了,最近要使用一下,所以重新打开html的书略读,后记录了标签 ...