学习 springboot 的困惑

2020-06-26 16:47:28 +08:00
 fxjson

一直比较抵触编译型语言,可能是我太懒了,感觉干啥都费劲和麻烦,搭建过 ssm,最终因为感觉配置麻烦而放弃,接触了 springboot,感觉还是蛮好的,一些默认配置已经帮我们做了,现在学习到集成 db,貌似可选的有 jpa 个 mybatis, 尝试写了个 user 表,忽然发现 mybatis 挺灵活,但是感觉写 xml 总感觉不爽,不知道大家的实际项目中用的什么 db 层

10244 次点击
所在节点    Java
83 条回复
yannxia
2020-06-26 22:34:21 +08:00
Jooq 好一点也好不太多,Mybatis 就和写 Sql 没啥区别,Jpa 复杂 Query 还不如写 SQL 。
总而言之,都不太爽。
levon
2020-06-26 23:00:24 +08:00
用过 entityframework 的我再去 xml 写 sql,以前的我就是这么拒绝 spring mvc 的,不过现在又被逼回来写屎一样的 xml,每次写都很不爽。
sagaxu
2020-06-26 23:18:21 +08:00
简单的查询走 jpa,复杂的 jdbctemplate 走起,mybatis 现在基本上只有中国人还在用
alcarl
2020-06-26 23:27:45 +08:00
没有多种数据库支持需求的话,xml 写可以最大化发挥数据库各种原生特性来写复杂查询简化代码提高效率,随意优化查询。数据库懂得越多 xml 越香
Muyiafan
2020-06-27 00:15:16 +08:00
jpa + querydsl
tctc4869
2020-06-27 01:57:06 +08:00
mybatis 本质就是面向模板引擎,自己用 freemaker 做 sql 模板引擎
ericgui
2020-06-27 02:33:53 +08:00
如果有人给你支付工资,并且你不是一个人在战斗,我觉都还好

别你自己一个人玩,没人付钱,而且卡在某地地方还没办法找人上了,就傻了
hellofrank
2020-06-27 09:13:19 +08:00
简单的 crud 用 jpa, 复杂的上 mybatis.
另:
java 技术讨论 qq 群:731376782,欢迎各位加入
magiclz233
2020-06-27 09:16:50 +08:00
jpa 就是 hibernate 那一套,mybatis sql 比较灵活,我觉得看你表结构的复杂程度吧 如果很复杂的话, 用 mybatis 好点,如果比较简单 或者说表结构不停变 加字段或者减字段 那就没必要用 mybatis
micean
2020-06-27 09:24:09 +08:00
纯 sql 写多了还是喜欢 mybatis,idea 配置了数据库之后也不存在字段变更导致的 bug 忽视问题
matthewxu123
2020-06-27 09:31:07 +08:00
@murmur 你不知道 jpa 或者 jdbcTemplate 都可以写进 properties?
murmur
2020-06-27 11:54:29 +08:00
@matthewxu123 你 properties 能换行么
murmur
2020-06-27 11:56:32 +08:00
@matthewxu123 斜杠和加号拼接一样,可以,但是视觉上不够优雅
hantsy
2020-06-27 12:50:09 +08:00
首先,纠正一下。Java 不一定要编译才能运行。

Java 已经可以直接运行***单个源文件***,某种程序上说,可以将 Java 当成 Script 来用了,现在有一些 Infra as code 脚本工具也是支持 Java 的。

https://www.infoq.com/articles/single-file-execution-java11/
hantsy
2020-06-27 12:52:56 +08:00
@yannxia JPA 本来就支持 Native Query,什么叫不如写 SQL ???
Sendya
2020-06-27 12:52:56 +08:00
我前单位,数字货币项目,并发非常高,用的还是 spirng data jpa 依旧很稳,技术栈 要全公司开发大部分愿意才好选择
itechify
2020-06-27 12:53:37 +08:00
置顶好骚啊
hantsy
2020-06-27 13:09:48 +08:00
@Sendya 任何技术使用好坏都是和人有关。还有任何技术都是为了解决某方面的问题,而不是全能王。

从程序设计上讲,JPA 解决了 OOP 和 Data Modeling 不匹配的问题,使用 JPA 能够最大程序的发挥 OOP 语言的特性。而不是困在 RDBMS 的泥潭了。

对于使用 JPA 有问题的人,只是有一点 SQL 基础,完全不懂 OOP 抽象,也不愿意学习 JPA 那一套 API 而已。以前帮朋友面试过一些 Java 候选者,有个 Java 5,6 年的说 Hibernate,MyBatis 对比说得头头是道,说自己大量的实战经验证明 Hibernate 不行。结果问了一个基础中的基础问题,我们提到维护 Hibernate Session(对应 Hibernate 一级缓存)的里的对象状态有几状态,怎么维护(和变迁的),他脑子好像空白,根本就不知道这 Session 是什么东西。

总有一些人无端的报怨 JPA 不方便,性能, 什么的,说白了自己的问题,绝大部分这些人都没有系统的学习过 JPA 。

JPA 如果你没有能力掌握,你说你的 MyBatis 写的代码性能比 JPA 好,不是笑话吗?
hantsy
2020-06-27 13:28:08 +08:00
@sagaxu 没错。

我从来没有遇到在国外项目看到有人使用过 Batis,MyBatis 。Spring JdbcTemplate 配合 Java 8 语法还不错,写起来与 Helidon DbClient 差不多。

再说回来,老外的项目,我遇到他们死磕要全部代码 Typesafe,不允许用字符的查询语句,他们推荐一些复杂查询用 JOOQ,后来我还用 Criteria API 完成了。
fxjson
2020-06-27 13:37:32 +08:00
@hantsy jdbctemplate 应该需要封装基本单表的 curd 啊,不然代码到处是 sql

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

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

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

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

© 2021 V2EX