跳到正文
Elaine Blog
返回

JDBC、连接池、JPA/Hibernate 与 Spring Data

MyBatis、MySQL 与数据架构

这些技术不是同一层的竞争品牌。JDBC 是 Java 数据库访问标准接口,连接池管理连接生命周期,MyBatis 映射手写 SQL,JPA 是 ORM 规范,Hibernate 是常见 JPA 实现,Spring Data 在存储技术之上提供仓库抽象。

Table of contents

Open Table of contents

从底到顶看抽象

业务仓库接口
  ├─ Spring Data JPA → JPA → Hibernate ┐
  ├─ MyBatis → SQL 映射               ├→ JDBC → 连接池 → 数据库
  └─ 直接 JDBC                         ┘

ORM 是 Object-Relational Mapping,对象关系映射:把对象状态与关系表记录关联起来。它能减少简单增删改查代码,但对象图与关系查询并不天然等价,仍需理解 SQL、事务和索引。

如何选择

场景合理起点
SQL 很少、要求完全控制JDBC 或轻量 JDBC 模板
复杂查询多、团队擅长 SQLMyBatis
聚合模型清晰、常规 CRUD 多JPA/Hibernate
希望统一仓库接口和分页规范对应存储的 Spring Data 模块

项目可以在模块边界内混用,例如核心写模型用 JPA、复杂报表用 MyBatis,但同一事务、连接和实体状态边界必须清晰。

性能陷阱不会被抽象消除

MyBatis 常见 N+1 来自嵌套查询;Hibernate 常见 N+1 来自懒加载对象图。二者都要用 SQL 数量测试和生产观测治理。连接池耗尽、超长事务、无索引查询和返回过多列也与框架无关。

JPA 的持久化上下文会跟踪实体变化,批量处理时需分批 flushclear;MyBatis SqlSession 有一级缓存,也不能无限保存。不要把任一会话跨线程或跨请求共享。

选型验证应实现同一垂直切片:条件查询、分页、批量写、并发更新、事务回滚、迁移和指标。比较生成 SQL、调试难度、团队能力与退出成本,而不是比较 Hello World 行数。

下一步

继续阅读06-19 数据存储选型,从访问模式出发选择关系库、文档库、分析库与对象存储。


分享这篇文章:

上一篇
分库分表、历史归档与在线迁移
下一篇
数据存储选型:MySQL、PostgreSQL、MongoDB、ClickHouse、对象存储