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

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

基于基本的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  调用存储过程使用

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

时间: 2024-10-12 11:48:20

【sping揭秘】18、使用spring访问数据的相关文章

Spring04-SpringEL&Spring JDBC数据访问

一. SpringEL入门 Spring动态语言(简称SpEL) 是一个支持运行时查询和操作对象图的强大的动态语言,语法类似于EL表达式,具有诸如显示方法和基本字符串模板函数等特性. 1. 准备工作 项目:spring-el 2. 需要导入jar包 spring-expression.jar maven项目pom文件添加: 1 <dependency> 2 <groupId>org.springframework</groupId> 3 <artifactId&g

Spring入门到精通&lt;三&gt;Spring访问数据库

Spring在数据访问方面提供了模板化和Dao支持类的提供,方便操作数据库. 一.Spring JDBC 1.配置数据源 DataSource 不管选择哪一种Spring Dao的支持方式,你都需要配置一个数据源的引用.配置方式有三种: ①.使用JNDI查找数据源: ②.使用数据源连接池:(dbcp c3p0 druid)  <!-- 配置数据源 -->      <bean id="dataSource" class="org.apache.commons

简析Spring MVC 数据解析

简析Spring MVC 数据解析 特别说明:本文使用spring 版本为 4.1.3 常用数据提交方式: 1. form 表单提交数据 1.1 解析form表单数据(无图片等数据) 前端代码事例: <form action="test/entity" method="post"> 用户ID:<input type="text" name="userid"/><br> 用户名:<inp

深入了解Entity Framework框架及访问数据的几种方式

一.前言 1.Entity Framework概要 Entity Framework是微软以ADO.NET为基础所发展出来的对象关系映射(O/R Mapping)解决方案.该框架曾经为.NET Framework的一部分,但Version 6之后从.NET Framework分离出来,可通过NuGet获取. Entity Framework利用抽象化数据结构的方式,将每个数据库对象都转换成应用程序对象 (Entity),而数据字段都转换为属性 (Property),关系则转换为结合属性 (Ass

ADO.NET程序访问数据的组件

组成--数据集(内存中的数据库) --DataSet数据集 --DataTable数据表 --DataColumn数据列 --DataRow数据行 --DataView数据视图--NET数据提供程序 --Connection连接(程序和数据库之间的桥梁) --Open/Close --ConnectionString:连接字符串(目标数据库的信息) --服务器:server / data source --用户名:uid / user id --密码:pwd / password --数据库:d

访问数据的方法

对于优化器而言,它在解析目标SQL,得到执行计划时至关重要的一点是决定访问数据的方法,即优化器要决定采用什么样的方式和方法去访问目标SQL所需要访问的存储在oracle数据库中的数据. 目标SQL所需要访问的数据一般存储在表里,而oracle访问表中数据的方法有两种:一种直接访问表,另一种是先访问索引,在回表(当然,如果目标sql所要访问的数据只通过访问相关的索引就可以得到,那么此时就不需要回表了) oracle数据库中直接方位表中数据的方法有两种:一是全表扫描,而是rowid扫描 1. 全表扫

Citrix XenMobile学习笔记之六:XenMoble业务访问数据流程

总体访问流程图 终端设备注册流程 Android设备注册流程 到google Play或亚马逊应用商店或者豌豆荚.Citrix官网,下载思杰Worx Home应用.并在设备上安装. 当系统提示您安装该应用程序,单击下一步,然后单击安装. 安装Worx Home之后,点击启动. 输入您的认证信息,如设备管理器服务器名,用户主体名称(UPN),或电子邮件地址的名称,然后单击下一步. 在激活设备管理员屏幕上,点击激活. 输入您的账户密码,然后点击点登录. 根据XenMobile的配置方式,您可能会被要

设置IE浏览器跨域访问数据

在开发中,经常会遇到多站点跨域访问后台服务获取数据的情况,解决方法有两种 自己写代理服务,访问代理服务,代理服务请求服务获取数据再返回: 设置浏览器可以跨域访问数据. 本文来讲如何设置IE浏览器跨域访问数据,步骤如下: 打开[Internet选项],窗口如下 选择标签[安全],图片如下 选中[Internet],选择[自定义级别],图片如下:      如上图,在[其他]目录下,设置[跨域浏览窗口和框架]和[通过域访问数据源]为启用,确定,即设置成功! 如果站点为[本地intranet],则选择

C# 访问数据的时候报错 (拒绝了对对象 &#39;XXXX&#39; (数据库 &#39;SHQY&#39;,架构 &#39;dbo&#39;)的 SELECT 权限)

拒绝了对对象 'XXXX' (数据库 'SHQY',架构 'dbo')的 SELECT 权限 解决办法 use [docareMZ]--docareMZ 数据库名 GO GRANT SELECT ON SCHEMA::[dbo] TO [public] --查 use [docareMZ] GO GRANT EXECUTE ON SCHEMA::[dbo] TO [public] C# 访问数据的时候报错 (拒绝了对对象 'XXXX' (数据库 'SHQY',架构 'dbo')的 SELECT