`
gongmingwind
  • 浏览: 588626 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

(转)Spring DAO层的设计思想

阅读更多
前言

近几年持久化技术领域异常喧嚣,各种框架雨后春笋般地冒出,Sun也连接不断地颁布几个持久化规范。Spring对多个持久化技术提供了集成的支持,包括 Hibernate、iBatis、JDO、JPA、TopLink,此外,还通过Spring JDBC框架对JDBC API进行简化。Spring面向DAO制定了一个通用的异常体系,屏蔽具体持久化技术的异常,使业务层和具体的持久化技术达到解耦。此外,Spring 提供了模板类简化各种持久化技术的使用。通用的异常体系及模板类是Spring整合各种五花八门持久化技术的不二法门,Spring不但借此实现了对多种持久化技术的整合,还可以不费吹灰之力整合潜在的各种持久化框架,体现了“开-闭原则”的经典应用。


Spring的DAO理念
DAO(Data Access Object)是用于访问数据的对象,虽然我们在大多数情况下,将数据保存在数据库中,但这并不是唯一的选择,你也可以将数据存储到文件中或LDAP中。DAO不但屏蔽了数据存储的最终介质的不同,也屏蔽了具体的实现技术的不同。

  早期,JDBC是访问数据库的主流选择,近几年,数据持久技术获得了长足的发展,Hibernate、iBatis、JPA、JDO成为持久层中争放异彩的实现技术。只要为数据访问定义好DAO接口,并使用具体的技术实现DAO接口的功能,你就可以在不同的实现技术间平滑的切换。


  



  图 1 业务层通过DAO接口访问数据

  图 1是一个典型的DAO应用实例,在UserDao中定义访问User数据对象的接口方法,业务层通过UserDao操作数据,并使用具体持久技术实现UserDao接口方法,这样业务层和具体持久化技术就实现了解耦。

  提供DAO层的抽象可以带来一些好处,首先,我们可以很容易地构造模拟对象,方便单元测试的开展,其次在使用切面时,我们有更多的选择:既可以使用JDK动态代理也可以使用CGLib动态代理。

  Spring本质上希望以统一的方式整合底层的持久化技术:以统一的方式进行调用及事务管理,避免让具体的实现侵入到业务层的代码中。由于每个持久化实现技术都有各自的异常体系,所以Spring提供了统一的异常体系,使不同异常体系的阻抗得以弥消,方便定义出和具体实现技术无关的DAO接口,以及整合到相同的事务管理体系中。


转自:http://tech.ddvip.com/2008-12/122846308697708.html
  • 大小: 10.4 KB
分享到:
评论

相关推荐

    JDBC_DAO设计思想与搭建骨架, 结合Service层讲解DAO层的异常处理

    **JDBC DAO设计思想与搭建骨架** 在Java开发中,JDBC(Java Database Connectivity)是连接数据库的标准API,而DAO(Data Access Object)模式是一种常用的设计模式,用于封装对数据库的操作,以降低业务逻辑与数据...

    DAO与三层结构

    DAO模式的核心思想是将数据库操作封装到一个独立的对象中,这样可以隔离业务逻辑层和数据存储层,降低耦合度。DAO提供了一种标准接口,使得业务逻辑层可以不关心具体的数据存储细节,而只关注业务逻辑的实现。例如,...

    Dao设计模式教程

    DAO模式的核心思想是创建一个接口或抽象类,代表一个特定的数据操作,然后创建该接口的具体实现类,这些实现类会包含具体的数据库操作。这样,当业务代码需要与数据库交互时,它只需要与DAO接口打交道,而不是直接...

    Hibernate封装dao层

    "Hibernate封装DAO层"就是将Hibernate的功能整合到DAO设计模式中,以实现更加高效、规范的数据库操作。 1. **DAO设计模式**: DAO模式是软件设计模式的一种,它的核心思想是创建一个独立于具体数据库操作的对象,...

    DAO模式设计

    DAO(Data Access Object)模式是软件开发中常用的设计模式,主要目的是为了将数据访问层与业务逻辑层解耦,提供一个抽象层来处理数据库操作。DAO模式的核心思想是通过创建一个独立于具体数据库操作的对象(即DAO)...

    基于DAO设计模式的新闻发布系统

    1. DAO设计模式:DAO模式的核心思想是创建一个接口,该接口定义了对数据存储的通用操作,然后实现这个接口以处理具体的数据库交互。这样,当需要与不同的数据库或数据源交互时,只需改变DAO的实现即可,而不会影响到...

    SPRING技术内幕:深入解析SPRING架构与设计原理.pdf 下载

    5. **Spring DAO**:数据访问抽象层,提供了一组JDBC的抽象层,极大地简化了数据访问层的异常处理。 6. **Spring ORM**:提供了与ORM框架集成的功能,包括Hibernate、JPA等。 ### 二、Spring框架的核心概念 #### 1...

    DAO层.doc

    本文将基于给定的文档内容,深入探讨DAO层的设计原理及其在四层B/S架构中的作用。 #### 二、四层B/S架构概述 四层B/S(Browser/Server)架构是一种常见的企业级应用架构,它将整个应用程序划分为四个层次:表示层、...

    经典spring关于关于dao模式的开发案例

    7. **单元测试**:Spring的TestContext框架使得编写DAO层的单元测试变得简单,可以模拟数据源并注入到测试类中,进行隔离的测试。 8. **依赖注入**:通过Spring的IoC容器,可以将数据源、SessionFactory或...

    web学习笔记 —— DAO设计模式

    - **事务管理**:DAO层通常需要处理事务,确保一组数据库操作的原子性。 - **异常处理**:合理抛出和处理数据库操作可能出现的异常,提供良好的错误信息。 - **性能优化**:考虑缓存策略、批处理操作等来提升性能。 ...

    DAO设计模式

    DAO设计模式的核心思想是为每个数据存储创建一个接口(DAO Interface),然后提供一个实现了该接口的具体类(DAO Implementation)。这个接口定义了对数据库进行操作的方法,如查询、添加、删除和更新数据。具体类则...

    DAO模式实现增加删除修改操作

    DAO层应捕获并处理可能抛出的数据库相关异常,如`SQLException`,然后将其转换为业务层能理解的异常,如自定义的`DataAccessException`。 6. **查询优化** 对于复杂的查询,DAO层可以利用预编译的SQL...

    javaDAO设计模式

    6. **单元测试(Unit Testing)**:DAO层作为独立的模块,便于进行单元测试,可以模拟数据库环境,验证其正确性。 7. **异常处理(Exception Handling)**:在DAO实现中,通常会捕获数据库操作抛出的异常,并转换为...

    DAO设计模式精讲(java web开发)

    **DAO设计模式的核心思想** DAO设计模式的核心是创建一个接口,该接口定义了对数据库进行操作的方法,如查询、插入、更新和删除等。然后,为这个接口提供具体的实现类,这些实现类会包含与数据库交互的细节。这样,...

    J2EE之DAO设计模式

    - **可测试性**:方便对DAO层进行单元测试,独立于实际数据库环境。 - **可扩展性**:易于添加新的数据存储方式,如更换数据库或引入NoSQL存储。 - **重用性**:相同的数据访问逻辑可以在多个业务场景下复用。 7...

    java dao模式搭建教程

    Java DAO(Data Access Object)模式是一种常见的软件设计模式,它在Java应用中被广泛用于分离业务逻辑层与数据访问层,以实现数据操作的封装和解耦。本教程将逐步介绍如何搭建一个基于DAO模式的Java项目。 1. **...

    Hibernate通用Dao设计。

    1. **通用Dao的设计思想** - **继承机制**:创建一个基类AbstractHibernateDao,其中包含常用的CRUD(Create, Read, Update, Delete)方法。这些方法可以适用于所有实体类,通过泛型参数来指定具体的实体类型。 - ...

    Spring技术内幕:深入解析Spring架构与设计原理(第2版)

    本书《Spring技术内幕:深入解析Spring架构与设计原理(第2版)》旨在帮助开发者深入了解Spring框架的核心架构和设计思想。 #### 二、Spring核心模块详解 1. **Spring Core**:这是Spring框架的基础,提供I/O操作、...

    小型web程序实例DAO

    在IT行业中,DAO(Data Access Object)模式是一种常见的软件设计模式,主要用于数据库访问。这个"小型web程序实例DAO"是一个教学或实践项目,它演示了如何在Web应用程序中使用DAO来处理数据存取操作。下面将详细...

    Spring经典思想总结

    2. **数据库操作**:在数据访问层,通过Spring的依赖注入特性,可以方便地注入数据源和其他相关的DAO(Data Access Object)组件,从而降低了代码间的耦合度,使各个组件更加专注于自己的职责。 3. **Web层**:在...

Global site tag (gtag.js) - Google Analytics