7.1  概述

7.1.1  JDBC回顾

传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示:

java代码:

Java代码  
  1. //cn.javass.spring.chapter7. TraditionalJdbcTest
  2. @Test
  3. public void test() throws Exception {
  4. Connection conn = null;
  5. PreparedStatement pstmt = null;
  6. try {
  7. conn = getConnection();              //1.获取JDBC连接
  8. //2.声明SQL
  9. String sql = "select * from INFORMATION_SCHEMA.SYSTEM_TABLES";
  10. pstmt = conn.prepareStatement(sql);    //3.预编译SQL
  11. ResultSet rs = pstmt.executeQuery();   //4.执行SQL
  12. process(rs);                       //5.处理结果集
  13. closeResultSet(rs);                 //5.释放结果集
  14. closeStatement(pstmt);              //6.释放Statement
  15. conn.commit();                    //8.提交事务
  16. } catch (Exception e) {
  17. //9.处理异常并回滚事务
  18. conn.rollback();
  19. throw e;
  20. } finally {
  21. //10.释放JDBC连接,防止JDBC连接不关闭造成的内存泄漏
  22. closeConnection(conn);
  23. }
  24. }

以上代码片段具有冗长、重复、容易忘记某一步骤从而导致出错、显示控制事务、显示处理受检查异常等等。

有朋友可能重构出自己的一套JDBC模板,从而能简化日常开发,但自己开发的JDBC模板不够通用,而且对于每一套JDBC模板实现都差不多,从而导致开发人员必须掌握每一套模板。

Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发,而且如果各个公司都使用该抽象框架,开发人员首先减少了学习成本,直接上手开发,如图7-1所示。

图7-1 Spring JDBC与传统JDBC编程对比

7.1.2  Spring对JDBC的支持

Spring通过抽象JDBC访问并提供一致的API来简化JDBC编程的工作量。我们只需要声明SQL、调用合适的Spring JDBC框架API、处理结果集即可。事务由Spring管理,并将JDBC受查异常转换为Spring一致的非受查异常,从而简化开发。

Spring主要提供JDBC模板方式、关系数据库对象化方式和SimpleJdbc方式三种方式来简化JDBC编程,这三种方式就是Spring JDBC的工作模式:

  •  JDBC模板方式:Spring JDBC框架提供以下几种模板类来简化JDBC编程,实现GoF模板设计模式,将可变部分和非可变部分分离,可变部分采用回调接口方式由用户来实现:如JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate。
  • 关系数据库操作对象化方式:Spring JDBC框架提供了将关系数据库操作对象化的表示形式,从而使用户可以采用面向对象编程来完成对数据库的访问;如MappingSqlQuery、SqlUpdate、SqlCall、SqlFunction、StoredProcedure等类。这些类的实现一旦建立即可重用并且是线程安全的。
  • SimpleJdbc方式:Spring JDBC框架还提供了SimpleJdbc方式来简化JDBC编程,SimpleJdbcInsert 、 SimpleJdbcCall用来简化数据库表插入、存储过程或函数访问。

Spring JDBC还提供了一些强大的工具类,如DataSourceUtils来在必要的时候手工获取数据库连接等。

7.1.4    Spring的JDBC架构

Spring JDBC抽象框架由四部分组成:datasource、support、core、object。如图7-2所示。

图7-2 Spring JDBC架构图

support包:提供将JDBC异常转换为DAO非检查异常转换类、一些工具类如JdbcUtils等。

datasource包:提供简化访问JDBC 数据源(javax.sql.DataSource实现)工具类,并提供了一些DataSource简单实现类从而能使从这些DataSource获取的连接能自动得到Spring管理事务支持。

core包:提供JDBC模板类实现及可变部分的回调接口,还提供SimpleJdbcInsert等简单辅助类。

       object包:提供关系数据库的对象表示形式,如MappingSqlQuery、SqlUpdate、SqlCall、SqlFunction、StoredProcedure等类,该包是基于core包JDBC模板类实现。

【第七章】 对JDBC的支持 之 7.1 概述 ——跟我学spring3相关推荐

  1. (数据库系统概论|王珊)第七章数据库设计-第一节:数据库设计概述

    注意:此部分内容和软件工程的知识点重合较多,更多请点击[免费分享]软件工程核心知识点 本章较分散,各节导航如下 (数据库系统概论|王珊)第七章数据库设计-第二节:需求分析 (数据库系统概论|王珊)第七 ...

  2. 数据库系统概论 第七章 数据库设计(1)特点,概述,设计方法,规范设计方法,新奥尔良方法,用户和数据库管理员,模式,外模式,概念模式,逻辑模式,内模式,需求分析,数据项,数据流,数据存储,处理过程

    关注公众号凡花花的小窝,收获更多的考研计算机专业编程相关的资料 7.1数据库设计概述 广义的讲,是数据库及其应用系统的设计,即设计整个数据库应用系统 狭义的将,是设计数据库本身,即设计数据库的各级模式 ...

  3. 【第一章】 Spring概述 —— 跟我学Spring3

    为什么80%的码农都做不了架构师?>>>    1.1  Spring概括 1.1.1  Spring是什么 Spring是一个开源的轻量级Java SE(Java 标准版本)/Ja ...

  4. 算法设计与分析第七章分支限界算法(完结篇)

    算法设计与分析第七章分支限界算法 一.分支界限算法概述 1.分支限界法类似于回溯法,是一种在问题的解空间树上搜索问题解的算法. 分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解 ...

  5. java第七章jdbc课后简答题_java学习路线流程

    第一阶段JavaSE: 第一章:jdk的安装与配置 第二章:Java基础语法: 变量.常量.数据类型.关键字 运算符和表达式:运算符:+.-.*./ 表达式:正则表达式 关系及逻辑运算符:关系运算符: ...

  6. java第七章jdbc课后简答题_jsp编程基础第七章习题

    第七章数据库访问 一.选择题 1.下面哪一项不是JDBC的工作任务?() A)与数据库建立连接B)操作数据库,处理数据库返回的结果 C)在网页中生成表格D)向数据库管理系统发送SQL语句 2.下面哪一 ...

  7. 第七章 项目进阶,构建安全高效的企业服务

    第七章 项目进阶,构建安全高效的企业服务 1.Spring Security 1.1 基本介绍 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案 ...

  8. stm32 工业按键检测_「正点原子STM32Mini板资料连载」第七章 按键输入实验

    1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上一章,我们介 ...

  9. 第七章httpd.conf主配置文件的详解

    版本V1.0 时间2012-10-04 版权GPL 作者itnihao 邮箱 itnihao@qq.com 博客 http://itnihao.blog.51cto.com 如需重新发行,请注明以上信 ...

最新文章

  1. Winform中使用FastReport实现自定义PDF打印预览
  2. linux一直用户身份验证失败,linux – chsh:PAM身份验证失败
  3. 在BingoCC上面解析域名实现智能路由
  4. JavaScript -- arguments、apply 、call、bind
  5. 同样是程序员,为什么别人比你更优秀?
  6. 会议上,如何分配任务
  7. dw属性面板 的HTML,Dreamweaver中AP Div属性面板
  8. 区块链开源框架 HyperLedger Fabric 学习思路分享
  9. kodi pvr 不能安装_Kodi看电视直播教程 安装PVR IPTV Simple Client播放m3u8直播源
  10. JDK环境变量设置以及检验是否配置成功
  11. 知识付费的多重属性与本质特征
  12. iphone电脑wifi连接服务器未响应,苹果wifi连接不上怎么回事_苹果电脑连接不上wifi的解决步骤-win7之家...
  13. 台式计算机启动时 每次按f1,开机按f1的解决方法_电脑开机每次都要按F1,怎么解决...
  14. CAD制图初学入门 零基础学CAD要掌握技能精选
  15. 告别 PS !3 行代码 5 秒搞定抠图的 AI 神器!
  16. JAVA开发基础之使用IDEA导出JAR包
  17. 用nodejs配合python破解X-Ca-Signature,抓取博客积分数据
  18. 图形学(1)概论及一些基础知识
  19. 如何在 Linux 下关闭 i386 架构
  20. Vue 传值方式——父向子传递数据

热门文章

  1. 【机械常识】螺栓、螺钉、螺柱、螺杆、螺母的区别和归类
  2. 访问学者申请德国签证如果丢失了怎么办?
  3. mysql中数据库字段类型详解
  4. noi题目P4206 [NOI2005] 聪聪与可可
  5. 查询学生 学号、姓名和平均成绩
  6. Mr.Alright---手机连接电脑,在电脑上的大小如何修改
  7. 【编译原理】:如何将控制语句翻译成四元式
  8. Android应用双开供系统在主副屏展示使用总结及问题总结
  9. FPGA纯verilog实现UDP通信,三速网自协商仲裁,动态ARP和Ping功能,提供工程源码和技术支持
  10. php js 插件,超轻量级网页流布局JS插件Macy.js