感觉 spring jpa 使用越来越广泛了

2020-12-14 20:34:58 +08:00
 myqa

未来可能会取代 mybatis 成为 java orm 第一选择 当然不适用 springboot 的话就不好说了

10035 次点击
所在节点    Java
65 条回复
mmdsun
2020-12-15 09:46:16 +08:00
2020 年,jpa 对 2 表联合查询,只取部分字段的支持怎么样 ?记得以前 jpa 用连表还得配置一对多,多对一,不然 join 直接报错。 感觉 jpa 配置不好,性能很难优化,经常出现 n+1 查询情况。

现在 jpa 使用还是要配置一对多,多对一么?
ghostsf
2020-12-15 10:02:10 +08:00
综合一下 mybatis plus +1
myqa
2020-12-15 10:03:31 +08:00
@mmdsun 不造呀,现在做项目都是很简单 sql 的查询了,连表都很少用甚至都不用了
Yano
2020-12-15 10:03:36 +08:00
jpa 对单表简单的增删改查还是很爽的~我现在小的项目是 jpa,涉及复杂的再用 jdbcTemplate,其实我感觉 jdbcTemplate 也很简单呀~也很灵活。
kaiz1121
2020-12-15 10:05:03 +08:00
不管 mb 还是 jpa 都是 crud 手动狗头
lewis89
2020-12-15 10:31:54 +08:00
@mmdsun #21 一直都有 QueryDSL 这种魔改的玩意,你没发现?
lewis89
2020-12-15 10:33:06 +08:00
@mmdsun #21 只取部分字段? 要用覆盖索引吗?说实话实际上快不了多少,除了背八股文喜欢这么背,真实项目里面基本不用覆盖索引
echo1937
2020-12-15 10:41:49 +08:00
@myqa #20 我所在项目确实是 JPA + 原生 MyBatis,

为什么 Spring JPA 运用越来越广泛了?
1 、微服务兴起,DDD 略有抬头;
2 、不时兴多表查询了,现在是个程序员都会被教育“超过三张表禁止 join”;
3 、原生 MyBatis 要么手写效率低,要么靠插件生成一堆模板代码,实在不是我这种 Lombok 党的菜。MyBatis-PLUS 很好地弥补了这个问题,并提供了很多功能增强,但是他定义了很多特有的注解,实现了类似 JPA 的功能,这点我不太喜欢。
myqa
2020-12-15 10:47:51 +08:00
@echo1937 想当年一开始是 Hibernate 比较流行,后来嫌弃他性能慢(主要是乱用),都用 mybatis,现在 Hibernate 伪装成 spring data jpa 又回来了,真是因吹斯听
q149072205
2020-12-15 11:07:31 +08:00
jpa 谁用谁知道。用了根本停不下来。。
mmdsun
2020-12-15 11:17:06 +08:00
@lewis89 不是什么索引覆盖,单纯问下投影查询的支持。以前都是用 HQL @Query SELECT NEW LanguageDTO 这种语法的,而且用 HQL 还是要配置一对多关系 不然 join 报错,当时感觉就很麻烦。刚刚看文档。这块改进很大。QueryDSL 也用过,但很难写出 mybatis 的动态 SQL 吧,

<if test="value!=null and value!=''">
AND a.userId = #{value}
</if>
lewis89
2020-12-15 11:24:37 +08:00
@mmdsun #31 这..需要控制这么细致吗 QueryDSL 是可以生成 condition 对象的,无非是要手写代码判断是不是要把这个 condition 加进去...
Saurichthys
2020-12-15 11:26:05 +08:00
用 nutz dao 丝滑
myqa
2020-12-15 11:31:27 +08:00
@Saurichthys 前提得用 nutz,不过感觉始终是小众框架,类似于 php 上的 tp
a719031256
2020-12-15 11:34:39 +08:00
看好 mybatis plus,过度方便,jpa 以前用过,现在忘完了。。。。
Saurichthys
2020-12-15 11:41:27 +08:00
@myqa 不用的呀,现在直接 springboot 加一个 nutz-starter 的依赖就行了
myqa
2020-12-15 11:44:08 +08:00
@Saurichthys 哦哦我五年前用过还没这东西,不过感觉还是 jpa 好毕竟学习资料多
zhouyou457
2020-12-15 11:49:12 +08:00
虽然前期看起来不用写 sql 很美好,但是等业务量(瞎改)一上来的时候需要写各种关联 sql 的时候就恶心了。

别问我为啥,现在看着手头的产品的源码就头疼。代码版本才到 1.5 就已经难以维护了,service 层各种拼接 SQL 字符串。
wangyanrui
2020-12-15 12:00:37 +08:00
DDD 的 CQRS 了解一下
hantsy
2020-12-15 12:26:42 +08:00
十年前就取代了。

用 JPA 的最好去正经的看一本 JPA 的书,比 Pro JPA2,Java Persistence with Hibernate (这个是 Hibernate 作者写的) 等。JPA 是一套完整的 Java Persistence 方案体系,不是简单的取代 SQL 。如果在你在报怨 Hibernate 性能, 在埋怨 Hibernate 执行效果你不如你写的 SQL,如果你不是 SQL 方面专家,对于 95%以上的人都是伪命题,你根本就没正经的用过 Hibernate 。

再说句费话,只有中国人在用 Mybatis 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/735432

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX