知识卡片

Spring Data JDBC与JPA的取舍

专业/工作 · 521.a

内容

同样是通过 JDBC 驱动接关系数据库,Spring Data JPA(底层是 Hibernate)功能强大但概念复杂——持久化上下文、懒加载、脏检查、会话这些机制不摸透很容易踩坑,且默认基于可变对象、有参构造要求,与不可变实体设计天然冲突;Spring Data JDBC 是更晚出现的轻量选项,直接对齐领域驱动设计的聚合、聚合根、仓储这些概念,把 SQL 查询的控制权更多留给开发者,天然支持不可变实体(Java record 都能直接拿来用),代价是功能没有 JPA 全,不是所有场景的无脑替代品。发散:这个取舍背后是复杂度守恒——JPA 把对象关系映射的复杂性收进框架内部换取”几乎不用写SQL”的便利,Spring Data JDBC 把这部分复杂性交还给开发者换取行为可预测、心智负担更低,微服务这种领域边界本来就清晰的场景,往往用不上 JPA 那套复杂映射能力,简单反而是优势。

参考来源

《Cloud Native Spring in Action》第5章《Persisting and managing data in the cloud》