🎊 spring data jpa明明很不错了,为什么现在还是这么多人吹mybatis?

spring data jpa明明很不错了,为什么现在还是这么多人吹mybatis?

作者:kane君

链接:https://www.zhihu.com/question/438832773/answer/1691336666

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

jpa确实很不错了,这两个框架也都没必要吹,只是要看具体的场景,选择合适的

既然问题问的是mybatis,那我给个简化过的场景,随手写的没有验证,大家简单扫一眼,知道意思就好了

CREATE TABLE class

(

id long,

name text

) comment '班级表';

CREATE TABLE student

(

id long,

class_id long

) comment '学生表';

CREATE TABLE course

(

id long,

name text

) comment '课程表';

CREATE TABLE exam

(

id long,

course_id long

) comment '考试表';

CREATE TABLE score

(

student_id long,

exam_id long,

val double

) comment '成绩表';

# 统计每个班级的各科累积成绩的平均值(仅统计有成绩的学生)

SELECT c.name,

co.name,

SUM(s.val) / COUNT(DISTINCT IF(s.val IS NOT NULL, st.id, NULL))

FROM score s

LEFT JOIN student st ON st.id = s.student_id

LEFT JOIN exam e ON e.id = s.exam_id

LEFT JOIN course co ON co.id = e.course_id

LEFT JOIN class c on c.id = st.class_id

GROUP BY c.id, c.name, co.id, co.name

ORDER BY c.name, co.name

这个场景已经非常努力的简化过了,看看最后那句sql,想想这种东西jpa如果不用 nativeQuery 的话得写多少行代码才能实现?

如果用 nativeQuery 的话,它比 mybatis 更优吗?

在我遇到的真实场景里,没有学生,也没有考试,更没有这样简单

事实上在那个场景里随便拉出一句sql就有上百行,整个项目到处都有类似的统计代码,不说人读起来吃力,就连机器构建语法树都要等上好一会

为什么人和机器读起来都吃力?因为这个场景用的真的就是jpa,真的就是 nativeQuery 在 java 文件里写了几千行,就这还是重构后的结果

在重构之前,那位程序员写的倒是更面向对象,把每条记录都查出来,在jvm做聚合运算.......每一个运算步骤之后jpa都会带着上千个参数回数据库里查询...想想就恐怖

🎯 相关推荐

宜春割包皮医院
365数字含义

宜春割包皮医院

📅 07-02 👀 9527
雨刷器节点在哪,右雨刮器节点清晰图
365bet提款审核

雨刷器节点在哪,右雨刮器节点清晰图

📅 09-16 👀 1879
正在阅读:新浪微博水印设置教程【详解】新浪微博水印设置教程【详解】
成都市简阳市河东新区有哪些比较好的桑拿洗浴推荐?
office365企业邮箱设置

成都市简阳市河东新区有哪些比较好的桑拿洗浴推荐?

📅 08-28 👀 970
珍爱网调研报告谈相亲约会:迟到千万要有分寸
office365企业邮箱设置

珍爱网调研报告谈相亲约会:迟到千万要有分寸

📅 09-22 👀 7154
如果你新买了电脑却死活装不上系统请看过来
office365企业邮箱设置

如果你新买了电脑却死活装不上系统请看过来

📅 09-19 👀 6605
从零到实战!2025年手机炒股全流程解析:开户避坑、软件实测与交易技巧!
安徒生十大经典作品榜中榜
365数字含义

安徒生十大经典作品榜中榜

📅 07-29 👀 5332
香蕉为啥要摘没成熟的青果?原来是这样
365bet提款审核

香蕉为啥要摘没成熟的青果?原来是这样

📅 08-30 👀 9135