老哥们好,关于 Java ORM 选型的问题,有问题请教

2024-06-17 15:49:52 +08:00
 Lnanvily

小弟是新人上路,正在使用 SpringCloud 进行一个娱乐直播平台小项目的练手开发,在选择 ORM 框架时看到大家的争论有点摸不清头脑。

TLDR:

小弟进行练手开发是为了尽快提高到能进入企业熟练打杂的水平,但是因不知道目前企业主流的方案而感到困扰,希望大佬们能指点一下 ORM 选型,小弟感激不尽

背景:

目前试用了 Mybatis+ MybatisPlus/tk.mapper/mybatis-mapper 几种方案 其中最有意向的时 Mybatis+Mybatis Plus 的方案,使用 mybatis 的 XML 写一些比较复杂的查询,用 MP 的 QueryWrapper 进行一些简单的查询。

tk.mapper/mybatis-mapper 用起来似乎与 quweryWrapper 区别不大,但写起来略感麻烦,不是很倾向使用 其他的 mybatis 方案如 fluent-mybatis,mybatis-flex 更是看的小弟眼花缭乱,这些框架的支持者都各有各的说辞,实在难以分辨

除 Mybatis 之外,小弟还注意到有 JPA+hibernate,以及 QueryDSL 等等五花八门的方案,各方的支持者也是你不让我我不让你

额外请求

打听到的公司目前使用的技术包括 SpringCloud,k8s,elasticSearch,kafka 等,各位大佬能否提供一些学习建议,小弟感激不尽。
5527 次点击
所在节点    Java
47 条回复
lsk569937453
2024-06-17 15:56:59 +08:00
Mybatis+Mybatis Plus 无脑用这个方案就行了,使用量大,碰到的问题网上基本都有答案。
Stevenv
2024-06-17 15:59:12 +08:00
Mybatis Plus 就成。国内主流。
我现在在用 JPA 也挺舒服
ByteCat
2024-06-17 16:04:30 +08:00
选哪个都行,挑个自己喜欢的就好了。
一般的公司用 MyBatis 系( MyBatisPlus 之类)
我自己项目用 JPA ,现在换 JOOQ 了,更爽
0xD800
2024-06-17 16:54:33 +08:00
mybatis-mapper 的 wrapper 比 mp 的 Lambda 好用一点,mp 的 lambda 还需要传类型才能获取到类型提示,mybatis-mapper 直接.wrapper().eq(getXXX, vv)就可以获得到类型提示。不过 mybatis-mapper 有一些功能要自己实现比如自动设置 createBy 、乐观锁字段,这些都有解决方案,可以加新版 mapper 群讨论
cheng6563
2024-06-17 16:59:05 +08:00
Mybatis Plus 就行了,用的很广。

jpa 这类硬 orm 国内用的少,用起来稍微复杂一点的查询就非常蛋疼
shanai
2024-06-17 17:02:54 +08:00
jpa + querydsl 配合有 QuerydslPredicateExecutor 可以做到不写 sql 用起来还是比较爽的
shanai
2024-06-17 17:04:21 +08:00
@shanai 不过这个不是主流
txzh007
2024-06-17 17:04:58 +08:00
看数据库怎么设计了.mp 最大的问题就是写 wrapper 会把数据库属性字段写到业务代码中,个人还是更喜欢 jpa
issakchill
2024-06-17 17:11:52 +08:00
无脑 mp 吧
northernsongy2
2024-06-17 17:15:19 +08:00
如果是学习为目的,那么看眼缘选一个,然后深入学学源码,如果是公司要求,那么就跟公司走
jlkm2010
2024-06-17 17:17:30 +08:00
Mybatis+Mybatis Plus ,或者 BeetlSQL
Ayanokouji
2024-06-17 17:21:48 +08:00
推荐个小众框架 https://ebean.io
nothingistrue
2024-06-17 17:28:18 +08:00
选型是架构师(或者个人开发者)干得,并且是只在项目开工或重构期间才干的活,搬转码农就不要去想了。

新搬转的水平,九成九取决于过往搬转的经验和那期间对经验的总结和学习,非搬转期间的自学、实练什么的,(仅限对于将来搬转的影响)不能说毫无作用,只能说没啥卵用。

如果是纯粹的学习,那就无脑跟着 spring.io 以及它使用的第三方框架学。其他五花八门的方案,都只是工具,只有 Spring 体系是课程。
final7genesis
2024-06-17 17:53:23 +08:00
mybatis plus 关联查询还是要写 sql 吧,jpa 配置下 onetomany manytomany 啥的 关联查询也不用写 sql
hdfg159
2024-06-17 19:05:50 +08:00
无脑 mbp ,国内主流
zhenglinsmile
2024-06-17 19:33:10 +08:00
第一次用 JPA 最近发现某几个表 明明只进行了一次修改 entity 也只有一次修改 但是看 sql 日志 就是被多更新了 5 次 目前还没找到原因…
xmtpw
2024-06-17 21:07:24 +08:00
@Ayanokouji 看了下文档还不错啊,老哥稳
9c04C5dO01Sw5DNL
2024-06-17 21:09:47 +08:00
Mybatis Plus 就行了,不要把时间浪费在这些 crud 框架上。终其一生也写不了多少 crud
Lnanvily
2024-06-17 22:30:55 +08:00
非常感谢大佬们的指点,正在全力开码中...
dasbn
2024-06-17 22:59:14 +08:00

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

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

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

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

© 2021 V2EX