V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  diagnostics  ›  全部回复第 1 页 / 共 41 页
回复总数  806
1  2  3  4  5  6  7  8  9  10 ... 41  
你的头为什么尖尖的?
5 天前
回复了 zsmile 创建的主题 Java 国内的 Java 体系真的很落后吗?
数据库访问一般就是两个门派:

- JPA 、Hibernate 等 ORM:这类就是解决大部分 CRUD 需求的,简单的查询,涉及到多表,复杂查询就会性能低下,上手门槛也更高
- JDBC Temple 、MyBatis 、JOOQ 这类 SQL Helper:这类就是解决复杂查询的,因为本来就是 SQL ,想咋写就咋写


因为本来就是 SQL ,因此先说说第二类的发展历程,一开始大家写 JDBC 还好,写多了发现模板代码太多了,主要是两个层面,一个是连接这边的代码,一个是 ResultSet 做数据转换的代码,所以诞生了类似于 Apache Commons DbUtils 这种工具来简化,在 Spring 环境中则是 Spring JdbcTemplate 。

接下来事情就会朝着两极发展,还是先从 SQL 说起

Commons DbUtils 、JdbcTemplate 这类框架只简化了连接和响应映射,在动态 SQL 的支持比较少,因此诞生了 MyBatis 也就是 JdbcTemplate 高级版,通过模板引擎解决动态 SQL ,并且支持预定义的一些 SQL

当然 Mybatis 被人诟病的 XML ,还有动态能力在复杂场景还是有限的,例如写一个递归形式的动态条件(再举个例子,DAO 方法只穿入一个 filter ,这个 filter 可以是普通的 KeyValue 过滤,也可以多个 KV 组成的 AnyOf 和 AllOf 多重过滤,后两者对应的就是 id in (select id from t where f1 and/or f2 and/or f3...),这里面还可以动态拼接,我认为这种在 Java 里要用多态和类型匹配去做,MyBatis 对这个支持就不太行)

讲完了问题,就引出解决 MyBatis 这个陈旧框架的升级版 JOOQ ,这里用 TypeSafe 的 API 来编写复杂 SQL ,一来不需要频繁和 SQL 直接交互( Mybatis 也有一些这种痛点),也能避免出错;二来动态能力增强了,我能在 Java 代码而不是 XML 了编写内容。

到这里就是 SQL 帮助类这一方向发展的极端了(如果有更好的框架,可以提出),这里没有提到其他帖子的注入 MyBatis Plus (Join ),tk mybatis 等增强,而是因为他们要做的事情和 JPA 类似。

接下来谈谈 JPA ,JPA 的诞生我认为是解决 Commons DbUtils 、JdbcTemplate 这类框架中,对于一个表应该有的大部分普通操作 CRUD 没有预定义好一些模板代码,导致用户又需要频繁去写 findById ,findAll ,findCountByXXX 等操作(如果直接用 MyBatis ,也有这个问题,因此没有一个方案是一劳永逸的),简单来说我认为 JPA 就是用面向对象的方式编写简单查询,然后无感生成对应的模板 SQL 。但是这里的问题在于,JPA 这种注解时,方法名编写查询的方式,注定写不了复杂 SQL ,这又是一个新的问题。

总结,合并,从整个历程来看,数据库访问技术里,最终是趋向两个方向:简单查询自动生成、复杂 SQL 查询代码动态化,一个是前期需求,一个是后期需求。

以 MyBatis 和 JPA 举例,这两个框架都诞生了融合二者的三方框架:

- MyBatis Plus/ Mybatis Plus Join/ tk.mybatis
- JPA Criteria API, JPA QueryDSL

JPA/Hibernate 不能替代 SQL 。您应该充分利用 JPA 和 SQL ,并将它们组合成一个成功的解决方案。
MyBatis + 自动生成类增强插件似乎可行,但 MyBatis 自身的 SQL 能力不够强力,加上生成框架大部分就是国人写的,我并不是说国人的技术能力不行,而是国内这个职场氛围和文化,诞生不出来好的框架,原因有很多:996 、35 毕业、生存压力(投放广告),相对于 QueryDSL 、JOOQ 而言,国内的插件生态,文档不完善,功能不丰富。。。
入门:对技术有好奇心,能应付工作,但对“为什么”的能力有限,需要其他人来做设计选型
普通:对流行技术有普遍的了解,能找到适合的技术来做事情,但没有到一个领域深耕到专家
senior:在一个领域有深耕,能辐射给其他人了,不仅知道要怎么做,也知道为什么要这么做,例如做消息通信,怎么可靠交付、怎么时延低等,非常擅长用工具等等,这个阶段能带小团队,把控方向
staff:技术的资深总归是一个人的,staff 的意义在于推动对公司有战略价值的项目和工作,培养团队
不只是程序员啊,艺术家,照片,画画,视频都能做,加个机器人还能做保安,还有无人驾驶,外卖,计程车也被淘汰了,医生这些也会慢慢跟进的,最终机器人统领地球,人类会变成现在猴子的地位

所以你赶紧学点马戏,到时候在动物园耍猴的时候,争取比其他猴厉害点
15 天前
回复了 saki22oimo 创建的主题 路由器 300 元价位无线路由器
买了个中兴 AX300Pro 还可以
40 天前
回复了 devloperchen 创建的主题 程序员 极客时间标价虚高
@wangritian #15 平台没审核义务吗?为什么更多人选择京东而不是淘宝买家电,不就是图京东的售后和品质吗?
51 天前
回复了 andrew2558 创建的主题 淘宝 淘宝真的是魔怔了,网页都不给看了
这种情况下,不在淘宝买就行了
51 天前
回复了 jdrrragon 创建的主题 机械键盘 请求推荐便宜耐用机械键盘
现在买 ikbc 就是 49 年入国军,各种克制化,像 75 键位有 f75, g75pro 这些卷王,5 层结构带消音棉,可插拔轴,三模,也才 199 ,完全不是 ikbc 那种 200 的垃圾货能比的
56 天前
回复了 bthulu 创建的主题 程序员 有什么数据库扛断电能力最强吗?
软件层面上,lightbend akka 搞的 akka edge 好像想解决工厂这种恶劣环境下的问题
60 天前
回复了 GeekGuru 创建的主题 Apple M4 Pro Mac mini 实在太好了
@GarliCC 要焊吧,youtube 上看到的都是换颗粒
60 天前
回复了 tinyu 创建的主题 微信 张小龙真该 S 啊,后台下载 520GB 的内容
少加点色群
62 天前
回复了 BOGU 创建的主题 宽带症候群 广州目前最好的宽带套餐讨论
联通 59 送宽带,然后花 43 买畅享,20 升级 1000M
对,所以还是买 PC 合适,还能打游戏,是把?以很火的零刻举例

零刻 SER8 ¥2499
内存 64G DDR5 ¥ 1099
Rog 4k 240Hz 显示器 ¥8500
雷蛇猎魂光蛛 v3 ¥3150
雷蛇北海巨妖 v4 ¥3171
傲风 m6 Pro ¥2500

算起来大概需要:20,919 ,比 Mac mini 7 千,7 / 2 =3.5 , 便宜了 两倍多
恶心黑人就用 master ,但 main 的好处是打起来的字母少点...
63 天前
回复了 viber 创建的主题 生活 节日快乐!各位单身兄弟姐妹
以前光棍节算年轻人的节日
63 天前
回复了 sikuu2al 创建的主题 生活 11 月 11 了 抽烟一周年了
恭喜恭喜,再搞点榔子,槟榔加烟,法力无边!
阿里的都没有,看了下淘宝、鳄了么、高德都没,但是美团应该不是阿里系
1  2  3  4  5  6  7  8  9  10 ... 41  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2268 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 00:02 · PVG 08:02 · LAX 16:02 · JFK 19:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.