老哥们好,关于 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 条回复
ZeroDu
2024-06-17 23:18:48 +08:00
搬砖多年的告诉你:直接选 Mybatis Plus 就好,要联查的话:有基于 mp 扩展的 Mybatis Plus join 。还有建议使用 Lambda 开头的各种 Wrapper 。
ZeroDu
2024-06-17 23:27:51 +08:00
@dasbn #20
https://baomidou.com/reference/about-cve/

其实这个就是之前官方文档没说明普通 wapper 和 lambda 的区别, 没说明风险。
09an6YfX8rNvIG92
2024-06-17 23:46:55 +08:00
新手直接 Mybatis Plus
楼主明显是自己练习,想要快点能工作
在国内基本只有 mybatis 系可以选
不要推荐 jpa 了,国内没有水平可以的教程不说,学习难度远大于 mybatis ,企业也基本不用,学了基本没用
VeteranCat
2024-06-18 07:55:29 +08:00
自己玩随意,团队开发选择使用量大的。
dbpe
2024-06-18 08:45:08 +08:00
大环境是 mp..那就 mp 咯...毕竟很多人还是喜欢用 sql 写业务。(有些用 sql 的确简单很多)

至于 Ebean 、JOOQ 、QueryDSL 这些东西,都是歪门邪道,让我们自己爽就好了。。


PS: 没事多看看也是好的。。有时候我看到一些 mybats 增强,怎么看怎么都是往 jpa 那边靠,导致不伦不类的。(哎)
murmur
2024-06-18 08:55:23 +08:00
@dasbn 我感觉没问题,数据库的列还允许前端传入,前端传入的参数还不校验,然后甩锅给框架,这样的人还是开掉比较好

做后端第一件事不就是不能相信前端的任何参数么
ExplodingFKL
2024-06-18 08:56:10 +08:00
如果是个人的话想用啥就用啥咯,就算是 jetbrains 的 exposed 也不是不能用
wetalk
2024-06-18 09:08:27 +08:00
你也不想在 Java 代码中拼接复杂 SQL 吧
wqhui
2024-06-18 09:16:16 +08:00
@zhenglinsmile jpa 会管理 entity 实体,印象中是个叫生命周期管理之类的东西。如果你应用内存中的 entity 对象带有主键,比如执行 save 或者 select 出来,然后直接改 entity 内容,修改内容会自动同步到数据库,不需要显式调用更新保存
zhenjiachen
2024-06-18 09:17:17 +08:00
@dbpe 赞同,还不如直接 jpa 加 querydsl ,jooq 也可以但是低半版本数据库收费
jorneyr
2024-06-18 09:26:54 +08:00
推荐要么 MyBatis ,要么 JPA ,纯粹一些。
NikoXu
2024-06-18 09:54:11 +08:00
springdata Jpa + querydsl
JoJoWuBeHumble
2024-06-18 10:15:02 +08:00
找工作就是无脑 MP ,百分之八十以上的公司都是 MP 。
上家公司用的是 JPA ,问题数据库设计一泡污,导致 JPA 用起来非常不顺手,对新技术又抵触,不愿意引入 querydsl 。
JoJoWuBeHumble
2024-06-18 10:17:38 +08:00
而且你不需要纠结到底是 JPA 还是 MP ,现在 MP 反而不少功能在往 JPA 上面靠。最重要的是 SQL 能写明白就好了
limyel
2024-06-18 10:57:54 +08:00
mybatis plus +1 ,至于 jpa 用到了再学,国内很多厂商的习惯是会自己封装一套 jpa 的查询接口...
kratosmy
2024-06-18 11:27:29 +08:00
目前用的是 JPA ,但是一个方法名太长了。。
yeyang5211
2024-06-18 11:31:17 +08:00
mybatis plus +1 , 简单好用 适用面广
Richared
2024-06-18 11:36:08 +08:00
自己用用 jpa 。如果公司用尽量别用 jpa ,到时候用着用着 selectbyid 就变成扫全部关联表了。
kenvix
2024-06-18 12:01:16 +08:00
直接上 jOOQ 。别给自己添堵
ychost
2024-06-18 15:22:39 +08:00
如果是 Java 那么直接 MBP 就好了,用的人多坑少,如果用 Kotlin 那么建议 Ktorm 用起来比各种 Java 的 ORM 都爽太多,JOOQ 也好、JPA 也好只要是基于 Java 的那么没有语法糖加持都写起来怪怪的

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

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

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

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

© 2021 V2EX