Spring征服数据库

DAO:数据访问对象(data access object)的缩写。

如何你曾经编写过JDBC代码,你肯定会意识到如果不强制捕获SQLException,你几乎不能使用JDBC做任何事情。SQLException表示在尝试访问数据库时出现了问题,但是这个异常却没有告诉你哪里出错了以及如何进行处理。

可能导致抛出SQLException的常见问题包括:

1、应用程序无法连接数据库。

2、要执行的查询有语法错误。

3、查询中所使用的表和(或)列不存在。

4、试图插入或更新的数据违反了数据库的完整性约束。

它不是对每种可能的问题都会有不通的异常类型。而都是抛出SQLException。

一方面,JDBC的异常体系过于简单了---实际上,它算不上一个体系。另一方面,Hibernate的异常体系是其本身所独有的。我们需要的是,数据访问异常要具有描述性而且又与特定的持久化框架无关。

Spring几乎为读取和写入数据库的所有错误都提供了异常。Spring的数据访问异常很多。尽管Spring的异常体系比JDBC简单的SQLException丰富的多,但它没有与特定的持久化方式相关联。这意味着我们可以使用Spring抛出一致的异常,而不用关心所选择持久化方案。

Spring的异常大多继承自DataAccessException。这个异常的特殊指出在于它是一个非检查型异常。说白了不用写try catch。这把是否捕获异常的权利留给了开发人员。

Spring提供的数据访问模版,分别适用于不通的持久化机制。

时间: 2024-10-26 19:34:35

Spring征服数据库的相关文章

Spring : 征服数据库(一)

严格的说.这里征服的是关系型数据库.之后笔者会以MongoDB为例,给出非关系型数据库的解决方式,敬请期待. 获取连接,操作,关闭,不知所云的异常...是的,你受够了.在使用纯JDBC时你訪问数据库时写的80%的代码是反复的,对此,Spring给的方案是 模板 + 回调.模板就是訪问数据库时的固定操作.回调是变化的部分. 针对不同的持久化平台.你可选的模板是不同的:假设使用的是JDBC,能够选择JdbcTemplate,假设使用特定的ORM框架,能够选择HibernateTemplate或Sql

Spring : 征服数据库 (二)

这部分介绍Spring和ORM框架的整合.虽然Hibernate在开源ORM 社区很流行,但本文会以MyBatis为例讲解.另外关于MyBatis和Hibernate的优劣之分是没有意义的,主要是看实际需求,有兴趣可以百度.谷歌查看. 首先配置环境,你得有mybatis和mybatis-spring在Spring工程的build path里,如果你使用的是Maven,只需添加下面的依赖:(都是目前最新版本) <dependency> <groupId>org.mybatis<

Spring : 征服数据库 (三)

上一篇我们简单的讲解了Spring和MyBatis的整合,但你不难发现,其配置起来还是够麻烦的.最明显的一点是,我们需要在自定义的Mapper接口写个很长的SQL注解,并且还要手动注册到Spring容器.本文主要讲解简化的方法. 首先,还是定义接口,但你已看不到任何框架的痕迹, package org.chen.mybatis.mapper; import org.chen.domain.Spitter; public interface SpitterMapper { Spitter getS

第五章 征服数据库(Spring对DB的使用)——开发持久层

本章内容: 定义Spring对数据库访问的支持 配置数据库资源 使用Spring的JDBC模板 在几乎所有的企业级应用中,都需要构建数据持久层.现在意义上的数据持久层是指把对象或者数据保存到数据库中,以及从数据库中取出数据. Spring提供了一组数据访问框架,它集成了多种数据访问技术.不管是JDBC.iBATIS还是Hibernate. ? 一.Spring的数据访问哲学 Spring开发者一直坚持的一个目标之一就是:允许开发人员在开发应用软件时能够遵循面向对象原则的"针对接口编程"

Spring之数据库

接口是编写松耦合代码的关键 JDBC的异常体系与Spring的数据库访问异常: JDBC:可能导致SQLException异常的常见问题包括: 程序不能连接到数据库 被执行的查询具有语法错误 查询中所引用的表/列不存在 执行插入或更新的值会破坏数据库约束 Spring JDBC提供的数据访问异常体系会解决两个方面的问题,一是JDBC异常,由于任何数据访问错误都会触发SQLException,所以太笼统了:二是Hibernate的异常体系又是私有的这样就与持久框架相关联了. JDBC的异常: Ba

【j2ee spring】6、spring与数据库的连接配置

spring与数据库的连接配置 这里我们开始使用spring管理来配置数据的操作了 1.首先在xml文件中配置数据的连接 MySQL <bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!-- results in a setDriverClassName(String) call --&

Spring+Ibatis数据库水平分库

1.引言    笔者最近在做一个互联网的"类SNS"应用,应用中用户数量巨大(约4000万)左右,因此,简单的使用传统单一数据库存储肯定是不行的. 参考了业内广泛使用的分库分表,以及使用DAL数据访问层等的做法,笔者决定使用一种最简单的数据源路由选择方式来解决问题. 严格的说,目前的实现不能算是一个解决方案,只能是一种思路的简易实现,笔者也仅花了2天时间来完成(其中1.5天是在看资料和Spring/ibatis的源码).这里也只是为各位看官提供一个思路参考,顺便给自己留个笔记 2.系统

spring自动识别数据库并切换数据源

一.开篇 这里整合分别采用了Hibernate和MyBatis两大持久层框架,Hibernate主要完成增删改功能和一些单一的对象查询功能,MyBatis主要负责查询功能.所以在出来数据库方言的时候基本上没有什么问题,但唯一可能出现问题的就是在hibernate做添加操作生成主键策略的时候.因为我们都知道hibernate的数据库本地方言会针对不同的数据库采用不同的主键生成策略. 所以针对这一问题不得不采用自定义的主键生成策略,自己写一个主键生成器的表来维护主键生成方式或以及使用其他的方式来生成

【j2ee spring】7、spring与数据库的连接的操作事务管理

spring与数据库的连接的操作事务管理 1.首先我们的知道spring管理事务的方式有两种 还是一种是以注解的方式 在service类前加上@Transactional,声明这个service所有方法需要事务管理.每一个业务方法开始时都会打开一个事务. Spring默认情况下会对运行期例外(RunTimeException)进行事务回滚.这个例外是unchecked 如果遇到checked意外就不回滚. 1 让checked例外也回滚:在整个方法前加上 @Transactional(rollb