Spring DAO的哲学:
封装所有的数据库访问实现,包括JDBC,JDO,Hibernate等。
Spring的异常一般都是RuntimeException,数据访问的根异常是DataAccessException,所有的Spring的数据访问异常都继承DataAccessException。此外DataAccessException的nestedRuntimeException子类中,已经将所有的异常栈都进行了记录。
Spring的DAO异常对所有底层的DAO访问实现层的异常进行了统一的封装,并给出了更为有意义的异常。
CleanupFailureDataAccessException:清除失败异常
DataAccessResourceFailureException:资源访问异常
DataIntegrityViolationException:完整性约束异常
DataRetrievalFailureException:数据获取异常
DeadlockLoserDataAccessException:死锁访问异常
IncorrectUpdateSemanticsDataAccessException:更新出错异常
InvalidDataAccessApiUsageException:无效数据访问API使用异常
InvalidDataAccessResourceUsageException:无效数据访问资源使用异常
OptimisticLockingFailureException:乐观锁失败异常
TypeMismatchDataAccessException:类型匹配失败异常
UncategorizedDataAccessException:其他原因异常
Spring使用Template和Callback模式完成了对底层实现的统一封装,其中Template负责完成那些通用的功能(处理事务、管理资源、处理异常),Callback则完成变化的那部分内容(创建statement、设定参数parameter、生成数据集result)。参考图4.2、4.3太重要了。