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提供的数据访问模版,分别适用于不通的持久化机制。

标签