持久层二十年僵局,今天被打破

源码及案例: https://gitee.com/gao_zhenzhong/simple-dao-demo

持久层二十年僵局,今天被打破

我们聊一个更底层的问题:为什么你用到的所有数据库操作,最后都殊途同归,回到了同一条路上?

一、二十年的僵局:三大流派,各有各的死穴。

过去二十年,Java持久层领域一直是Hibernate、MyBatis、Spring JDBC三分天下的格局。市场上林林总总的持久层框架不下二十种——JOOQ、Jimmer、BeetlSQL、JDBI,以及后来以MyBatis为基础的各种衍生品——但它们从未撼动过这三大流派的地位。

为什么撼动不了?因为这三大流派,各自占据了一个不可替代的核心生态位。但与此同时,它们也各自带着一个致命的短板。

二、Hibernate的悲哀:把三分之一的SQL能力当成了全世界。

Hibernate曾经是正统,是SSH架构的基石。它抓住了“对象化操作”这个甜蜜点,让你用操作对象的方式操作数据库,在单表CRUD场景下无比丝滑。

但它的致命伤,是堵死了SQL的路。窗口函数、子查询、UNION ALL、复杂的关系聚合——这些SQL核心能力,Hibernate统统不支持。当你的业务复杂到需要写一个多表JOIN加条件聚合的报表时,你会发现,学了那么久的HQL、Criteria,全成了废纸,只能去钻原生SQL的后门。

ORM并没有死,但它永远被困在了单表CRUD的舒适区里。

三、MyBatis的伪胜利:留了一扇窗,却又造了一间牢房。

MyBatis吃掉的,正是那批被Hibernate堵得受不了的开发者。它最大的功劳,甚至可以说是唯一的功劳,就是没有把写SQL这条路堵死。你可以写任何你想要的SQL,这就是它当年在国内市场横扫千军的根本原因。

但问题来了——除了“让你写SQL”之外,MyBatis几乎一无是处。XML标签地狱、OGNL表达式、分页靠插件、权限靠插件、缓存靠插件、ResultMap的N+1陷阱……它给你的那扇窗,是用XML标签、接口映射、拦截器链层层包裹起来的。你花了大量精力去学那套东西,最后发现收益是负的。

MyBatis的流行,不是因为它有多好,而是在Hibernate把SQL大门焊死的黑暗年代,它是唯一一扇还敞开的透气窗。

四、Spring JDBC的沉默:真正的最优解,被遗忘了。

在金融、银行、保险等大型企业的核心系统里,在报表场景、高性能场景里,有一个沉默的霸主,叫Spring JDBC。它编写白盒、执行白盒、扩展无限,扩展成本低到令人发指。它没有黑盒,没有运行时魔法,不会制造那些让人抓狂的“框架专属异常”。

但它太沉默了。因为太稳定、太透明,所以社区没有讨论,网上没有声量。它成了沉默的大多数,被遗忘在了行业的角落里。

而它唯一的短板,一个是拼条件稍显繁琐,一个是单表样板代码重复。这些事,Spring JDBC选择了留给你自己处理。

五、SimpleDAO的入场:三大短板的终结者。

现在回来看,SimpleDAO到底干了什么?

它没有发明什么惊天动地的新东西。它只是敏锐地发现,这三大流派的短板,恰好可以被一个统一的范式完美解决。

  • ORM的短板,是SQL能力受限。SimpleDAO的解法:不封装任何SQL。 全量SQL能力,一行不减。
  • MyBatis的短板,是过度冗余,制造框架壳。SimpleDAO的解法:极简。 一个BaseCondition,几行add方法,单表联表共用同一套API。没有XML,没有Lambda表达式链,没有你要额外学习的私有DSL。
  • Spring JDBC的短板,是拼条件繁琐。SimpleDAO的解法:BaseCondition。 自动拼条件,自动收集参数,自动适配分页方言。它把Spring JDBC那些重复的、枯燥的脏活累活,全部自动化了。

它既保留了ORM单表对象化的甜蜜,又拥有MyBatis写SQL的自由,还继承了Spring JDBC的全部性能与透明。这三大主流各自撞过的墙,它一扇一扇,全部拆掉。

六、终极归宿:殊途同归,但SimpleDAO让你直接走直线。

我们今天能看到一个更深层的真相:无论是JPA还是MyBatis,即使你没有直接使用Spring JDBC,Spring JDBC也在被你们间接地使用着。在Spring生态下,Spring JDBC所提供的基础设施——DataSource、JdbcTemplate、声明式事务——已经是行业的事实标准。

无论你披着哪家的外衣,最终承载SQL执行的那个底层,永远是Spring JDBC。

既然殊途同归,最终都要回到Spring JDBC这条路上,那为什么不从一开始,就直接站在这个巨人的肩膀上呢?

你不需要住在JPA那栋有天花板的屋子里,也不需要困在MyBatis那间四面是标签的牢房里。你可以直接站在大地上,呼吸最自由的空气。

结语:

二十年来,无数框架告诉你,写SQL是低级的,需要被封装、被隐藏、被翻译。而SimpleDAO告诉你一个恰好相反的答案:SQL是你最强大的武器,没有任何东西值得夹在它和你之间。

这就是SQL-First。它不是什么横空出世的颠覆者,它是这二十年兜兜转转之后,唯一正确的那个答案。

源码及案例: https://gitee.com/gao_zhenzhong/simple-dao-demo

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容