使用JDBC进行数据访问spring
Spring框架JDBC抽象提供的值最好由下表中列出的操做序列来显示。下表显示了Spring负责哪些操做以及哪些操做是须要你去处理。数据库
动做行为安全 |
Spring 微信 |
你负责的app |
定义链接参数框架 |
x测试 |
|
打开链接优化 |
x编码 |
|
指定SQL语句spa |
x |
|
申明参数并提供参数值 |
x |
|
预处理并执行语句 |
x |
|
设置循环以遍历结果(若是有)。 |
x |
|
处理每一个迭代。 |
x |
|
处理异常 |
x |
|
处理事务 |
x |
|
关闭链接、语句和结果集。 |
x |
JDBC数据库访问方法的选择
你能够在几种方法中进行选择,以造成JDBC数据库访问的基础。除了三种类型的JdbcTemplate以外,一种新的SimpleJdbcInsert
和SimpleJdbcCall
方法优化了数据库元数据,而RDBMS(Relational Database Management System)对象样式采用了与JDO(Java Data Object )查询设计相似的面向对象的方法。一旦你开始使用这些方法之一,仍然能够混合和匹配包含来自不一样方法的特性。全部方法都须要一个兼容JDBC2.0的驱动程序,而一些高级特性须要一个JDBC3.0驱动程序。
JdbcTemplate是经典的、最流行的Spring JDBC方法。这种方法和全部其余方法都在覆盖下使用JdbcTemplate。
NamedParameterJdbcTemplate
封装JdbcTemplate以提供命名参数,而不是传统的JDBC ?占位符。当一个SQL语句有多个参数时,这种方法提供了更好的可读性和易用性。SimpleJdbcInsert
和SimpleJdbcCall
优化数据库元数据以限制必要的配置量。这种方法简化了编码,所以您只须要提供表或过程的名称,并提供与列名匹配的参数映射。只有当数据库提供足够的元数据时,此操做才有效。若是数据库不提供此元数据,则必须提供参数的显式配置或指定配置。RDBMS对象,包括MappingSqlQuery、
SqlUpdate
和StoredProcedure,要求在初始化数据访问层期间建立可重用和线程安全的对象。这种方法是在JDO查询以后建立的,在JDO查询中定义查询字符串、声明参数和编译查询。一旦这样作,就可使用各类参数值屡次调用execute方法。
Spring JDBC包层次结构
Spring框架的JDBC抽象框架由四个不一样的包组成:
core: org.springframework.jdbc.core包含JdbcTemplate
类及其各类回调接口,以及各类相关类。名为org.springframework.jdbc.core.simple的子包包含SimpleJdbcInsert
和SimpleJdbcCall
类。另外一个名为org.springframework.jdbc.core.namedparam的子包包含NamedParameterJdbcTemplate
类和相关的支持类。
datasource:org.springframework.jdbc.datasource包含一个实用程序类,用于轻松访问数据源和各类简单的数据源实现,可使用它们在Java EE容器外测试和运行未修改的jdbc代码。名为org.springfamework.jdbc.datasource.embedded的子包支持使用Java数据库引擎(如HSQL、H2和Derby)建立嵌入式数据库。
object:org.springframework.jdbc.object包含将RDBMS查询、更新和存储过程表示为线程安全、可重用对象的类。请参见将JDBC操做建模为Java对象。这种方法由JDO建模,尽管查询返回的对象天然与数据库断开链接。这种更高级别的JDBC抽象依赖于org.springframework.jdbc.core包中的较低级别抽象。
support:org.springframework.jdbc.support包提供了SQLException
转换功能和一些实用程序类。JDBC处理期间抛出的异常将转换为org.springframework.dao包中定义的异常。这意味着使用Spring JDBC抽象层的代码不须要实现JDBC或RDBMS特定的错误处理。全部转换的异常都未选中,这使你能够选择捕获可恢复的异常,同时容许将其余异常传播到调用方。
使用JDBC核心类控制基本JDBC处理和错误处理
介绍如何使用JDBC核心类来控制基本的JDBC处理,包括错误处理。它包括如下主题:
使用JdbcTemplate
使用
NamedParameterJdbcTemplate
使用SQLExceptionTranslator
运行Statements
运行Queries
更新Database
检索自动生成的Key
明天开始分别讲上述 7个主题的使用。
关注和转发 Spring 中文社区:
本文分享自微信公众号 - Spring中文社区(gh_81d233bb13a4)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。