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

188 天前
 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 等,各位大佬能否提供一些学习建议,小弟感激不尽。
4340 次点击
所在节点    Java
47 条回复
ZeroDu
187 天前
搬砖多年的告诉你:直接选 Mybatis Plus 就好,要联查的话:有基于 mp 扩展的 Mybatis Plus join 。还有建议使用 Lambda 开头的各种 Wrapper 。
ZeroDu
187 天前
@dasbn #20
https://baomidou.com/reference/about-cve/

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

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


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

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