



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Spring DAO 层的设计思想Spring DAO 层的设计思想2011-03-17 11:12:06| 分类:默认分类|字号 订阅概述 近几年持久化技术领域异常喧嚣,各种框架雨后春笋般 地冒出, Sun 也连接不断地颁布几个持久化规范。 Spring 对 多个持久化技术提供了集成的支持,包括Hibernate、iBatis 、JDO、JPA、TopLink ,此外,还通过 Spring JDBC 框架对 JDBC API进行简化。Spring面向DAO制定了一个通用的异常体系, 屏蔽具体持久化技术的异常,使业务层和具体的持久化技术 达到解耦。此外, Spring 提供了模板类简化各种持久
2、化技术 的使用。 通用的异常体系及模板类是 Spring 整合各种五花八 门持久化技术的不二法门, Spring 不但借此实现了对多种持 久化技术的整合,还可以不费吹灰之力整合潜在的各种持久 化框架,体现了“开 -闭原则”的经典应用。Spring 的 DAO 理念我们在大多数情况下,将数据保存在数据库中,但这并不是 唯一的选择,你也可以将数据存储到文件中或 LDAP 中。 DAO 不但屏蔽了数据存储的最终介质的不同, 也屏蔽了具体 的实现技术的不同。早期, JDBC 是访问数据库的主流选择,近几年,数据持久 技术获得了长足的发展, Hibernate 、 iBatis 、 JPA、 JDO 成
3、为 持久层中争放异彩的实现技术。 只要为数据访问定义好 DAO 接口,并使用具体的技术实现 DAO 接口的功能,你就可以 在不同的实现技术间平滑的切换。图 1 业务层通过 DAO 接口访问数据 图 1 是一个典 型的 DAO 应用实例, 在 UserDao 中定义访问 User 数据对象 的接口方法,业务层通过 UserDao 操作数据,并使用具体持 久技术实现 UserDao 接口方法,这样业务层和具体持久化技 术就实现了解耦。提供 DAO 层的抽象可以带来一些好处,首先,我们可 以很容易地构造模拟对象,方便单元测试的开展,其次在使 用切面时, 我们有更多的选择: 既可以使用 JDK 动态代
4、理也 可以使用 CGLib 动态代理。Spring 本质上希望以统一的方式整合底层的持久化技 术:以统一的方式进行调用及事务管理,避免让具体的实现 侵入到业务层的代码中。由于每个持久化实现技术都有各自的异常体系,所以 Spring 提供了统一的异常体系,使不同异 常体系的阻抗得以弥消,方便定义出和具体实现技术无关的 DAO 接口,以及整合到相同的事务管理体系中。 统 一的异常体系统一的异常体系是整合不同的持久化实现技术的关键, Spring 提供了一套和实现技术无关的、面向于 DAO 层次语 义的异常体系,并通过转换器将不同的持久化技术异常转换 成 Spring 的异常。Spring DAO
5、异常体系类非常丰富,这里, 我们仅列出 DataAccessException 异常类下的子类。 我 们可以很容易地通过异常类的名字了解到异常所代表的语 义。我们通过下表对这些异常进行简单的描述: 表 1 Spring DAO 异常体系类异常 说明 CleanupFailureDataAccessException DAO 操作成 功执行,但在释放数据资源时发生异常,如关闭 Connection 时发生异常等。 ConcurrencyFailureException 表示在进行并发数据操作时发生异常,如乐观锁无法获取、 悲观锁无法获取、死锁引发的失败等待异常。 DataAccessResour
6、ceFailureException 访问数据资源 时失败,如无法获取数据连接, 无法获取 Hibernate 的会话等。 DataRetrievalFailureException 获取数据失败,如找 不到对应主键的数据,使用了错误的列索引等DataSourceLookupFailureException无法从 JNDI 中当数据操作违反了查找到数据源。这个异常是 Spring 2.0 新增的DataIntegrityViolationException不正确地调数据一致性限制时抛出的异常,如插入重复的主键,引用不 存在的外键等。InvalidDataAccessApiUsageException用某一持久化技术时抛出的异常,如在 Spring JDBC 中查询 对象在调用前必须进行编译操作,如果忘记这项操作将会产 生该异常。这种异常不是由底层数据资源产生,而是由不正 确地使用持久化技术产生的。InvalidDataAccessResourceUsage数据访问时Exception 在访问数据源时使用了不正确的方法所 抛出的异常,如 SQL 语句错误将抛出该异常。PermissionDeniedDataAccessException其它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南省怀化三中2025届物理高一下期末学业水平测试试题含解析
- 2025届黑龙江省牡丹江市五县市物理高一第二学期期末综合测试模拟试题含解析
- 2025届陕西延安市实验中学大学区校际联盟高一物理第二学期期末复习检测模拟试题含解析
- 辽宁省阜新市海州高级中学2025年物理高二下期末复习检测试题含解析
- 宠物饲养与管理课件
- 2025届海南省临高县新盈中学高二物理第二学期期末经典模拟试题含解析
- 二零二五年财务顾问与财务软件公司合作协议
- 二零二五年度自建房竣工验收与交付使用合同
- 二零二五年财税代理服务合同-税务信息化解决方案
- 二零二五年酒吧餐厅综合承包运营管理协议
- 生产经营单位事故隐患内部报告奖励制度
- GA/T 751-2024公安视频图像屏幕显示信息叠加规范
- 肺结节治疗的方法
- 2025-2030中国托法替尼行业市场发展趋势与前景展望战略分析研究报告
- 不交社保劳务合同范本8篇
- 金矿居间合同协议
- 青少年体态管理课件
- DB61T378-2006 主要造林树种苗木质量分级
- 胫后动脉断裂的护理
- 共享单车运营服务合同样本
- 风湿免疫病患者结核病诊治及预防实践指南(2025版)解读课件
评论
0/150
提交评论