- 3
- 0
- 约5.47万字
- 约 43页
- 2016-10-13 发布于贵州
- 举报
跟开涛学sprg3(第7章)
作者博客:/ 欢迎访问
第七章 对JDBC的支持
7.1 概述
7.1.1 JDBC回顾
传统应用程序开发中,进行JDBC编程是相当痛苦的,如下所示:
以上代码片段具有冗长、重复、容易忘记某一步骤从而导致出错、显示控制事务、显示处理受检查异常等等。
有朋友可能重构出自己的一套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来在必要的时候手工获取数据库连接等。
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模板类实现。
7.2 JDBC模板类
7.2.1 概述
Spring JDBC抽象框架core包提供了JDBC模板类,其中JdbcTemplate是core包的核心类,所以其他模板类都是基于它封装完成的,JDBC模板类是第一种工作模式。
JdbcTemplate类通过模板设计模式帮助我们消除了冗长的代码,只做需要做的事情(即可变部分),并且帮我们做哪些固定部分,如连接的创建及关闭、。
JdbcTemplate类对可变部分采用回调接口方式实现,如ConnectionCallback通过回调接口返回给用户一个连接,从而可以使用该连接做任何事情、StatementCallback通过回调接口返回给用户一个Statement,从而可以使用该Statement做任何事情等等,还有其他一些回调接口如图7-3所示。
图7-3 JdbcTemplate支持的回调接口
Spring除了提供JdbcTemplate核心类,还提供了基于JdbcTemplate实现的NamedParameterJdbcTemplate类用于支持命名参数绑定、?SimpleJdbcTemplate类用于支持Java5+的可变参
您可能关注的文档
- 资源与评价数学年级下答案.doc
- 资源评价语文七答案.doc
- 赛力特硅藻土在脂行业的应用.doc
- 赞美,我二班的师们.12.1.doc
- 赣南医学院专升拔考历年试题汇编.docx
- 赣南师范大学《化学》考试大纲2016年硕士研究生同等学力加试考试大纲及参考书目.doc
- 赤壁赋优秀说课教案.doc
- 赤壁赋同步练习案1.doc
- 走进父母主题班设计简案.doc
- 走近Photohop 6.0中文版 14.doc
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
最近下载
- DLT5375-2018 火力发电厂可行性研究报告内容深度规定.pdf VIP
- (2026年春新版)人教版八年级生物下册全册教案.doc
- ISO 5173 2009 金属材料焊缝的破坏性试验—弯曲试验(中文版).pdf VIP
- (高清版)DB13(J)∕T 8555-2023 县城特色风貌设计标准.pdf VIP
- 高级政治经济学(蔡继明)6.分工体系与广义价值决定.ppt VIP
- 潍坊亚星新材料有限公司500吨年六氯环三磷腈和500吨年苄索氯铵项目环境影响报告书.pdf VIP
- 最新2026年时事政治题单招及答案(夺冠).docx VIP
- 学校1530安全教育记录(2026年春季期).docx
- [会计理论葛家澍pdf]葛家澍和他的会计时代.docx VIP
- 解读GB 6441-2025《生产安全事故分类与编码》.pptx
原创力文档

文档评论(0)