之前写前端比较多,最近开始用 Spring boot 开发 api
使用的是 JPA Hibernate orm+jdk21 方案,我不知道为什么感觉国内很多人不喜欢这个 Hibernate ,但是我自己用下来感觉非常好,它最牛逼的是可以按照 Entity 生成数据库结构,非常智能,所以你只要把实体定义好,一切都 ok 了,很容易维护。
有个插件 JPA buddy ,非常好用,可以很好规范代码。
JPA 也可以自定义 sql ,很灵活,除了在转成 json 的时候,会遇到无限循环的问题,其他感觉都很好。
感觉 Spring boot 写后端,除了 JAVA 本身有点啰嗦,还有编译很浪费时间,其他都还蛮不错的。

但是 JPA 通过 Entity 生成数据库的时候,为什么字段顺序和 Entity 是不一样的,是打乱的,,id 的位置会随机出现~~我槽,这就像要喝汤的时候飞进了一个苍蝇,我看网上有很多人说要 hack 一下,官方无解,但这个太离谱了。

然后就是 CommandLineRunner ,我本来的需求是需要给项目 seed 一点初始化数据,这个 CommandLineRunner 只在启动的时候自动执行,不能通过 cli 命令执行,,泥马这个 CommandLineRunner 和 Command 一点关系都没有啊,我内个去,所以 seed 数据只能在 CommandLineRunner 加 if 条件。你去看人家 PHP laravel 都有 artisan cil 工具啊,这个可是天天都要用的,为啥你没有啊~~~你 Tomcat 都可以监听指令,为啥就不做一个监听 命令行指令的。
后来我看了一个 spring boot cli 的插件,结果完全不是这个概念。。

为什么这么成熟的框架连这些基本都做不好啊~~谁可以告诉我一下~~

然后我现在在看 liquidbase 和 flyway ,还是 flyway 吧,直接 sql 多优雅,liquidbase 那个语法不能忍受~~

谁能告诉我怎么才能优雅的搞后端呢?
举报· 203 次点击
登录 注册 站外分享
17 条回复  
RainCats 小成 2024-9-2 10:28:38

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

@woodytang 注解里写 sql ,你是不是想"挨打"
prosgtsr 小成 2024-9-1 20:27:20

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

用 hibernate ,创建了一个对象,保存到数据库。
然后你修改了对象的一个字段,没有调用保存,你会发现数据库更新了。
我觉得这种特性很让人难受,代码不再是一个所见即所得的东西。为什么我没有显式写更新他要替我更新呢?这对我造成了很大的心智负担,所以我不喜欢它。当然你可以说我对它的认知有问题,但即便如此我还是不喜欢它。
stickchen 小成 2024-9-1 15:42:46

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

@woodytang 查询条件是可选条件你咋写呢,xml 可以写 if 判断的
chihiro2014 小成 2024-8-31 18:06:16

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

复杂的查询用 @Query 配合 projection
f0rb 小成 2024-8-31 17:07:02

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

你要是个人项目的话,看看 DoytoQuery ,通过定义对象来控制生成的 SQL 语句,上面那个 Comment 的例子大概可以这样写:

@SuperBuilder
public class CommentQuery extends PageQuery {
    private List<Long> parentIdIn;
}

CommentQuery commentQuery = CommentQuery.builder().parentIdIn(list).sort("createdAt,DESC").build();
List<Comment> comments = dataQueryClient.query(commentQuery);

更复杂的查询示例还有 TPC-H 的 22 个用来对数据库进行性能测试的查询语句。
之前推广的比较佛系,所以估计没什么人了解。
前几天还在这里发了个帖子想问问有没有人搞过推广的,想先推下 Go 版本的试试。
cppc 小成 2024-8-31 16:09:18

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

你要开发命令行工具可以看看 spring shell
billbob 初学 2024-8-31 10:34:01

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

你不会角色 spring 就只有 JPA 吧? 你可以 jdbc,jdbcClient,r2dbc,都很优雅.
ikas 小成 2024-8-31 00:19:10

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

java 10 多年前最流行的框架是 SSH...H 就是 hibernate

项目复杂度,开发时间,人员水平...无法平衡 导致它在国内用的少了.
jackOff 小成 2024-8-31 00:07:06

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

楼上说的基本正确:
1-主要是企业项目不可能依附于某个人,肯定是有其他人接力维护
2-用 jpa 的好处是可以省很多代码,坏处就是实力不行的家伙用这玩意搞多表关联偷懒,或者大佬开辟的 jpa 基石后续维护很容易维护成狗屎,其他狗屎尚且还有评鉴的余地,jpa 一旦出现 BUG 就是很难定位,那后人就得不断品尝的这坨越来越大的狗屎。
3-而且企业开发代码目前版本要求是:
      1-代码简单易读(保证人员调度可接力)
      2-程序稳定易维护(禁止不打招呼炫技,用特殊算法请和项目其他成员解释,必须署名在内网留一篇可复现核实的技术文档),并且要开一次技术分享会来讲讲你这玩意解决了啥。这招出来后很多炫技刷 kpi 的就老实很多了,因为他得抽工作时间或者私人时间准备技术分享会了
      3-降低架构设计成本(老板也是人精,越来越觉得这点业务也犯得着用上那么多架构技术?)
BBCCBB 小成 2024-8-30 23:54:30

关于 Java 和 Spring boot 开发体验的一些疑惑,请高手解答

根据不同的条件拼接 sql 的时候 JPA 就难搞了.
12下一页
返回顶部