Skip to content

包层级结构 (Package Hierarchy)

Spring 框架的 JDBC 抽象框架由四个不同的包组成:

  • core: org.springframework.jdbc.core 包包含 JdbcTemplate 类及其各种回调接口,以及一系列相关类。名为 org.springframework.jdbc.core.simple 的子包包含 SimpleJdbcInsertSimpleJdbcCall 类。另一个名为 org.springframework.jdbc.core.namedparam 的子包包含 NamedParameterJdbcTemplate 类和相关的支持类。
  • datasource: org.springframework.jdbc.datasource 包包含一个便于访问 DataSource 的工具类,以及各种简单的 DataSource 实现,你可以使用这些实现来测试和运行未经修改的 JDBC 代码(在 Jakarta EE 容器之外)。名为 org.springframework.jdbc.datasource.embedded 的子包提供了使用 Java 数据库引擎(如 HSQL、H2 和 Derby)创建嵌入式数据库的支持。
  • object: org.springframework.jdbc.object 包包含将 RDBMS 查询、更新和存储过程表示为线程安全、可重用对象的类。这种风格产生了一种更加面向对象的方法,尽管查询返回的对象自然与数据库断开连接。这种较高级别的 JDBC 抽象依赖于 org.springframework.jdbc.core 包中的较低级别抽象。
  • support: org.springframework.jdbc.support 包提供 SQLException 转换功能和一些工具类。JDBC 处理期间抛出的异常将被转换为 org.springframework.dao 包中定义的异常。这意味着使用 Spring JDBC 抽象层的代码不需要实现 JDBC 或特定于 RDBMS 的错误处理。所有转换后的异常都是非检查异常(unchecked exceptions),这使你可以选择捕获能够从中恢复的异常,同时让其他异常传播到调用者。

补充教学

1. 这种分包设计的用意何在?

Spring JDBC 的分包体现了高度解耦职责单一的原则:

  • core 是心脏:定义了操作的标准流转。
  • datasource 是入口:解决了“如何连接数据库”和“如何获取连接”这两个最初始的问题。
  • object 是外观:将面向过程的 JDBC 变为面向对象的 API。
  • support 是盾牌:将丑陋且难以维护的特定数据库异常屏蔽,代之以优雅的统一异常体系。

2. 开发者应该重点关注哪个包?

90% 的场景下,你只需要关注 core 包。它是你日常编码的主战场。 如果你是一个初级开发者,datasource 包的配置通常由 Spring Boot 自动帮你完成(通过配置 application.yaml)。 如果你在做一些非常底层的拦截、日志记录或者自定义异常处理,那么你会频繁地与 support 包打交道。 而 object 包,则更多地被用在那些追求极致 OOP(面向对象编程)风格的企业级架构中。

Based on Spring Framework.