日期:2014-05-16  浏览次数:20459 次

Spring in Action 学习笔记—第四章 征服数据库(转)


Spring2.0正式版(http://www.springframework.org/download
Spring2.0中文文档(http://spring.jactiongroup.net/viewtopic.php?t=2279&sid=0906ae6a913537b249e501db5b54c181)。
?
在前面的学习之后,我们已经了解了Spring框架的核心,在本章中作者向我们讲述了Spring的持久化层,向我们介绍了SrpingJDBC的支持。还向读者介绍了Spring如何与当前流行的一些ORM框架,如HibernateJDOOJB、和iBATIS等集成。?

一、学习SpringDAO理念?
DAO代表数据访问对象(Data?Access?Object)。它完美地描述了在一个应用中DAO的角色。DAO的存在提供了读写数据库中数据的一种方法。只要把这个功能通过接口暴露,应用的其他部分就可以通过这个接口来访问数据库了。下图展示了设计数据访问层的合适途径:?
Spring in Act<wbr>ion 学习笔记—第四章 征服数据库(转) - Fantasie - 随波逐流?
如上图所示,服务对象不再和特定的数据访问实现邦定在一起,使得他们易于测试。此外,我们是通过与持久化技术无关的方式来访问数据访问层的,DAO接口不需要暴露他采用什么技术去访问数据。Spring帮你把数据访问层从应用的其他部分隔离开来的一种方法是:提供一套贯穿整个DAO框架的一致的分级异常体系。?
1.理解SpringDataAccessException?
SpringDAO框架没有抛出与特定技术相关的异常,Spring提供了一种方便的方法,把特定于某种技术的异常,如SQLException,转化为自己的异常,这种异常属于以DataAccessException为异常层次。?
DataAccessExceptionRuntimeException,所以它是一个无需检测的异常。意思是说,当他们被数据访问层抛出时,并不需要你的代码去处理这类异常。这遵循了Spring的一般理念:异常检查会使你的代码到处是不相关的catchthrows语句,使代码杂乱无章。对数据访问异常来说,这点尤为正确,因为我们在写连接数据库和操作数据库表的代码中,总是充斥着大量的异常。?
一般情况下,我们的数据库访问API总是要抛出一个有意义的异常。JDO有它自己的异常层次。下图是Spring2.0中定义的异常层次。?

Spring in Act<wbr>ion 学习笔记—第四章 征服数据库(转) - Fantasie - 随波逐流上图所包括的异常类只是整个庞大的DataAccessException异常层次中的一部分。

<