码迷,mamicode.com
首页 > 编程语言 > 详细

【sping揭秘】18、使用spring访问数据

时间:2018-06-06 23:43:22      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:tca   模板方法模式   lang   调用   SQ   http   img   callback   api   

 

 

 

统一的数据访问异常层次体系

 

基于基本的jdbc封装dao层访问接口,封装不论是访问,csv文件,关系数据库(RDBMS),ladp都可以封装成一个个DAO对象来进行访问

 

抛出问题

 

可是对于我们忽略了一个问题,那就是当DAO层发生异常的时候,我们是否应该在dao层进行处理,如果是,那么有个问题,客户端调用方法的时候,怎么知道发生了什么异常,客户端对于访问数据层发生的事情是不可预知的,所以我们需要在DAO中吧异常抛出,也就是在类上throw Exception

 

 

但是上面还有一个问题,dao是我们封装访问数据的,可是对客户端来说,访问上面数据它并不关心,但是dao层需要对不同的数据层封装,如果是jdbc,那么异常可能是 SQLException,但是如果是ldap,那可能抛出NamingException,如果我们更换了数据访问对象,那么客户端又要对第二个异常进行处理,客户端代码还得改!!!

 

 

解决问题:

 

用runtimeexception对异常进行统一封装,然后抛出这一个类型的异常,这里还需要对异常进行异常的分类转译

 

也就是根据不同的数据库,提取信息,然后封装好抛出,当然一个runtimeexception肯定是不够用的,那么我们可以设计子类,排分出不同的异常对象子类

 

 

我们看看spring的异常体系

 技术分享图片

这里是spring的包装异常,我们观察一下它对应的dao的封装

 技术分享图片

 

 技术分享图片

 

 

JDBC API 的最佳实践

 

 

Spring有2种实践

1、 使用jdbctemplate为核心,基于Template的jdbc使用

2、 在jdbctemplate基础上构建基于操作对象的JDBC

 

 

 

首先使用jdbctemplate之前,我们先学习一下模板方法模式

 

http://www.cnblogs.com/cutter-point/p/5263492.html

 

 

spring中jdbctemplate类关系

 

 技术分享图片

 

 

Jdbctemplate中提供的基于五种查询的方式

 技术分享图片

技术分享图片

 

 技术分享图片

技术分享图片

 

 技术分享图片

 

 

 

基本就是五种:

 

ConnectionCallback 直接使用connection

 

StatementCallback  使用对外公开Statement对象

 

String sql 直接使用sql,这个没什么好说的吧。。。

 

PreparedStatementCallback 暴露PreparedStatement对象使用

 

CallableStatementCallback  调用存储过程使用

 

【sping揭秘】18、使用spring访问数据

标签:tca   模板方法模式   lang   调用   SQ   http   img   callback   api   

原文地址:https://www.cnblogs.com/cutter-point/p/9147712.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!