Spring DAO层的设计思想

Spring DAO层的设计思想

ID:38265949

大小:101.52 KB

页数:7页

时间:2019-06-07

Spring DAO层的设计思想_第1页
Spring DAO层的设计思想_第2页
Spring DAO层的设计思想_第3页
Spring DAO层的设计思想_第4页
Spring DAO层的设计思想_第5页
资源描述:

《Spring DAO层的设计思想》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、概述    近几年持久化技术领域异常喧嚣,各种框架雨后春笋般地冒出,Sun也连接不断地颁布几个持久化规范。Spring对多个持久化技术提供了集成的支持,包括Hibernate、iBatis、JDO、JPA、TopLink,此外,还通过SpringJDBC框架对JDBCAPI进行简化。Spring面向DAO制定了一个通用的异常体系,屏蔽具体持久化技术的异常,使业务层和具体的持久化技术达到解耦。此外,Spring提供了模板类简化各种持久化技术的使用。通用的异常体系及模板类是Spring整合各种五花八门持久化技术的不二法门,Spring不但借此实现了对多种持久化技术

2、的整合,还可以不费吹灰之力整合潜在的各种持久化框架,体现了“开-闭原则”的经典应用。Spring的DAO理念   DAO(DataAccessObject)是用于访问数据的对象,虽然我们在大多数情况下,将数据保存在数据库中,但这并不是唯一的选择,你也可以将数据存储到文件中或LDAP中。DAO不但屏蔽了数据存储的最终介质的不同,也屏蔽了具体的实现技术的不同。早期,JDBC是访问数据库的主流选择,近几年,数据持久技术获得了长足的发展,Hibernate、iBatis、JPA、JDO成为持久层中争放异彩的实现技术。只要为数据访问定义好DAO接口,并使用具体的技术实现

3、DAO接口的功能,你就可以在不同的实现技术间平滑的切换。图1业务层通过DAO接口访问数据图1是一个典型的DAO应用实例,在UserDao中定义访问User数据对象的接口方法,业务层通过UserDao操作数据,并使用具体持久技术实现UserDao接口方法,这样业务层和具体持久化技术就实现了解耦。提供DAO层的抽象可以带来一些好处,首先,我们可以很容易地构造模拟对象,方便单元测试的开展,其次在使用切面时,我们有更多的选择:既可以使用JDK动态代理也可以使用CGLib动态代理。   Spring本质上希望以统一的方式整合底层的持久化技术:以统一的方式进行调用及事务管

4、理,避免让具体的实现侵入到业务层的代码中。由于每个持久化实现技术都有各自的异常体系,所以Spring提供了统一的异常体系,使不同异常体系的阻抗得以弥消,方便定义出和具体实现技术无关的DAO接口,以及整合到相同的事务管理体系中。统一的异常体系   统一的异常体系是整合不同的持久化实现技术的关键,Spring提供了一套和实现技术无关的、面向于DAO层次语义的异常体系,并通过转换器将不同的持久化技术异常转换成Spring的异常。    SpringDAO异常体系类非常丰富,这里,我们仅列出DataAccessException异常类下的子类。我们可以很容易地通过异常

5、类的名字了解到异常所代表的语义。我们通过下表对这些异常进行简单的描述:表1SpringDAO异常体系类异常说明CleanupFailureDataAccessExceptionDAO操作成功执行,但在释放数据资源时发生异常,如关闭Connection时发生异常等。ConcurrencyFailureException表示在进行并发数据操作时发生异常,如乐观锁无法获取、悲观锁无法获取、死锁引发的失败等待异常。DataAccessResourceFailureException访问数据资源时失败,如无法获取数据连接,无法获取Hibernate的会话等。DataRe

6、trievalFailureException获取数据失败,如找不到对应主键的数据,使用了错误的列索引等。DataSourceLookupFailureException无法从JNDI中查找到数据源。这个异常是Spring2.0新增的。DataIntegrityViolationException当数据操作违反了数据一致性限制时抛出的异常,如插入重复的主键,引用不存在的外键等。InvalidDataAccessApiUsageException不正确地调用某一持久化技术时抛出的异常,如在SpringJDBC中查询对象在调用前必须进行编译操作,如果忘记这项操作将

7、会产生该异常。这种异常不是由底层数据资源产生,而是由不正确地使用持久化技术产生的。InvalidDataAccessResourceUsageException在访问数据源时使用了不正确的方法所抛出的异常,如SQL语句错误将抛出该异常。PermissionDeniedDataAccessException数据访问时由于权限不足引发的异常。如用仅拥有只读权限用户试图进行数据更改操作将抛出该异常。该异常是Spring2.0新增的。UncategorizedDataAccessException其它未分类的异常都归到该异常中为了进一步细化错误的问题域,Spring对

8、一级异常类进行子类的细分,如Inval

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。