WTH 是 JDBC、Spring JDBC、JPA、Hibernate、ORM、Spring Boot JPA
Source: Dev.to
Java 中数据库访问的演进

本文逐步说明了 Java 数据库访问是如何演进的:
JDBC → Spring JDBC → JPA → Hibernate → Spring Boot JPA
每一步都在解决前一步存在的问题。
1. JDBC(Java Database Connectivity)
概念
JDBC 是 Java 与数据库通信的最基础、最低层的方式。所有操作都需要手动完成。
特性
- JDBC Driver(Java 与数据库之间的桥梁)
Connection(打开到数据库的连接)Statement(执行 SQL 查询)PreparedStatement(预编译的 SQL,更安全更快)ResultSet(保存从数据库返回的数据)- 完全控制 SQL
- 支持多种数据库
问题
- 代码重复过多
- 必须手动打开和关闭连接
- 错误处理困难
- SQL 与业务逻辑混杂
- 大型项目维护困难
解决方案
JDBC 能用,但层次太低。我们需要更简洁的方案。
2. Spring JDBC
概念
Spring JDBC 对 JDBC 进行封装,Spring 为你管理连接和错误。
特性
- 减少样板代码
- 自动资源管理
- 更清晰的异常处理
- 仍然使用 SQL
- 比原生 JDBC 更易用
问题
- 仍需手写 SQL
- 需要手动把行映射为对象
- 数据库逻辑仍然遍布代码各处
解决方案
开发者希望使用 对象 而不是表,这就催生了 ORM。
3. JPA(Java Persistence API)
概念
JPA 是一种 标准 的 ORM(对象关系映射)规范。它定义 如何 实现 ORM,而不是提供具体实现。
特性
- 将表映射为 Java 对象
- 标准化 API(在任何实现上规则相同)
- 减少 SQL 使用
- 数据库无关
问题
- JPA 只是一套规则,没有实际代码
- 不能单独运行
- 需要具体实现
解决方案
使用像 Hibernate 这样的 JPA 实现。
4. Hibernate
概念
Hibernate 是一个 JPA 实现,真正完成 ORM 工作。
特性
- 自动生成 SQL
- 基于对象的数据库访问
- 缓存支持(将数据存入内存以加速访问)
- 懒加载(仅在需要时加载数据)
- 数据库无关
- 功能强大且灵活
问题
- 配置繁重
- 初学者上手困难
- 小项目的配置成本过高
- 使用不当会导致性能问题
Hibernate 的替代方案
- EclipseLink(官方 JPA 参考实现)
- OpenJPA(Apache 项目)
- MyBatis(侧重 SQL,非完整 ORM)
解决方案
Hibernate 功能强大,但需要简化。Spring Boot 正是为此而生。

5. Spring Boot JPA
概念
Spring Boot JPA 将 Spring Boot + JPA + Hibernate 组合在一起,强调简洁与快速。
特性
- 自动配置(无需手动设置)
- 默认使用 Hibernate
- 简单的 Repository 模式
- 结构清晰、易读
- 生产就绪
问题
- 低层控制较少
- 部分行为被自动配置隐藏
解决方案
是现代应用的最佳选择,仅在需要时才使用更底层的方案。