下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广告的制作和刊登行业相关项目经营管理报告
- 废水回用技术行业营销策略方案
- 广告设计行业相关项目经营管理报告
- 蜂箱用木格子市场发展前景分析及供需格局研究预测报告
- 自行车刹车操纵闸把市场分析及投资价值研究报告
- 皮制长外衣商业机会挖掘与战略布局策略研究报告
- 电打字机细分市场深度研究报告
- 为保护数据进行计算机安全威胁分析行业市场调研分析报告
- 广告分发行业营销策略方案
- 牙科用贵金属合金市场发展前景分析及供需格局研究预测报告
- 2024年云南省大数据限公司招聘81人高频考题难、易错点模拟试题(共500题)附带答案详解
- 护士服务规范与礼仪(护士礼仪服务规范)培训课件
- 质量通病防治措施手册
- 2024入团考试题库含答案(完整版)
- MOOC 旅游学概论-中国地质大学(武汉) 中国大学慕课答案
- 围手术期血糖管理指南
- 项目式教学设计与实施
- 国家开放大学《民法学(1)》案例练习参考答案
- 小学乐理知识入门课件
- 人教pep四年级下册unit3Weather4-单元整体作业设计
- 第6章 血液及造血系统疾病患者的护理课件
评论
0/150
提交评论