使用JDBC进行数据访问
Spring框架JDBC抽象所提供的价值,或许可以通过下表中列出的操作顺序来最好地展示。该表格显示了哪些操作由Spring负责,哪些操作是你的责任。
表1. Spring JDBC - 谁负责什么?
| 动作 | Spring | You |
|---|---|---|
| 定义连接参数。 | X | |
| 打开连接。 | X | |
| 指定SQL语句。 | X | |
| 声明参数并提供参数值 | X | |
| 准备并运行语句。 | X | |
| 设置循环以遍历结果(如果有的话)。 | X | |
| 对每次迭代执行相应操作 | X | |
| 处理任何异常 | X | |
| 处理事务 | X | |
| 关闭连接、语句和结果集 | X |
Spring框架处理了所有那些可能让JDBC变得如此繁琐的低级细节。
部分总结
📄️ 选择JDBC数据库访问的方法
您可以选择几种方法来构建您的JDBC数据库访问基础。除了三种类型的JdbcTemplate之外,SimpleJdbcInsert和SimpleJdbcCall方法可以优化数据库元数据,而RDBMS Object风格则提供了一种更加面向对象的方法。一旦您开始使用其中的一种方法,仍然可以混合使用其他方法来包含其他方法中的功能。
📄️ 包层次结构
Spring框架的JDBC抽象框架由四个不同的包组成:
📄️ 使用JDBC核心类来控制基本的JDBC处理和错误处理
本节介绍了如何使用JDBC核心类来控制基本的JDBC处理,包括错误处理。它包括以下主题:
📄️ 控制数据库连接
本节涵盖:
📄️ JDBC批量操作
大多数JDBC驱动程序在将多次对相同预编译语句的调用批量处理时,能够提供更优的性能。通过将更新操作分组为批次,可以减少与数据库的往返次数。
📄️ 使用SimpleJdbc类简化JDBC操作
SimpleJdbcInsert 和 SimpleJdbcCall 类通过利用可以通过 JDBC 驱动程序获取的数据库元数据,提供了简化的配置方式。这意味着你预先需要配置的内容更少,不过如果你愿意在代码中提供所有详细信息,也可以覆盖或关闭元数据处理功能。
📄️ 将JDBC操作建模为Java对象
org.springframework.jdbc.object包包含了一些类,这些类允许你以更加面向对象的方式访问数据库。例如,你可以运行查询并将结果返回为一个列表,其中包含业务对象,这些业务对象的关联列数据会被映射到业务对象的属性上。你还可以运行存储过程,以及执行更新、删除和插入语句。
📄️ 参数和数据值处理中的常见问题
Spring Framework的JDBC支持提供的不同方法中存在参数和数据值的常见问题。本节将介绍如何解决这些问题。
📄️ 嵌入式数据库支持
org.springframework.jdbc.datasource.embedded 包提供了对嵌入式 Java 数据库引擎的支持。它原生支持 HSQL、H2 和 Derby 等数据库。你还可以使用一个可扩展的 API 来添加新的嵌入式数据库类型和 DataSource 实现。
📄️ 初始化DataSource
org.springframework.jdbc.datasource.init包提供了对现有DataSource进行初始化的支持。嵌入式数据库支持为应用程序创建和初始化DataSource提供了一种方案。然而,有时你可能需要初始化在某个服务器上运行的实例。