WTH 是 JDBC、Spring JDBC、JPA、Hibernate、ORM、Spring Boot JPA

发布: (2026年1月19日 GMT+8 16:49)
4 min read
原文: Dev.to

Source: Dev.to

Java 中数据库访问的演进

Database Access Evolution

本文逐步说明了 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 正是为此而生。

Hibernate vs. Others

5. Spring Boot JPA

概念

Spring Boot JPA 将 Spring Boot + JPA + Hibernate 组合在一起,强调简洁与快速。

特性

  • 自动配置(无需手动设置)
  • 默认使用 Hibernate
  • 简单的 Repository 模式
  • 结构清晰、易读
  • 生产就绪

问题

  • 低层控制较少
  • 部分行为被自动配置隐藏

解决方案

是现代应用的最佳选择,仅在需要时才使用更底层的方案。

Back to Blog

相关文章

阅读更多 »

我直到构建持久层才明白 JPA

封面图片 👉“I Didn’t Understand JPA Until I Built the Persistence Layer” https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto...

懒加载 vs. 急加载 & JPA 关系

!Forem 徽标https://media2.dev.to/dynamic/image/width=65,height=,fit=scale-down,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2...