`
心动音符
  • 浏览: 342308 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

J2ee 集成层模式-数据访问对象

阅读更多
问题:

   需要将数据访问及操作的逻辑封装在一个单独的层次中。

   很多真实的J2EE应用系统将持久化对象实现为业务对象,具体的实现技术则可能是POJO或者 entity bean,如果应用系统需求更简单一些,也可以放弃业务对象,代之以会话门面、应用服务或者别的助手对象--这些助手对象将直接访问并操作持久化存储介质中的数据。不论是业务对象还是这些助手组件,他们都需要访问持久化存储中的业务数据。

    通常情况下,大多数企业级应用会使用数据库管理系统作为持久化存储介质。但是企业数据也可能存在于别的地方,例如大型主机或者遗留系统、轻量级目录访问协议仓库、面向对象数据库、普通文件等等。另外,可以吧外部系统的服务所提供也视为持久化数据,这样的例子包括了B2B集成系统、信用卡机构的服务等等。

    对于这些形形色色的持久化存储介质,他们的访问机制、支持的API和功能特性也是各不相同的。即便是遵从同一套API,底层的实现者也肯能在标准的特性之外在提供一些转有的扩展。

    如果在持久化逻辑与应用逻辑混淆,就会直接导致应用程序直接依赖于持久化存储机制的实现。一旦在组件中出现这样的代码依赖,再想把应用程序从一种数据源移植到另一种数据源就会困难重重。当数据源发生变化时,组件也必须加以修改才能使用新的数据源。

   约束:

--需要实现一个数据访问机制,用于访问、操作持久化存储介质中的数据。

--需要消除应用程序其余部分对持久化存储机制之间的耦合。

--需要为不同类型的数据源(例如:RDBMS、LDAP、OODB、XML仓库等)体统了一个统一的持久化机制和统一的数据访问API。

--需要对数据访问逻辑加以组织,并非标准点的专有特性封装起来,是系统便于维护和移植。

解决方案:

  使用数据访问对象提炼,、封装持久化存储介质的访问数据访问对象负责管理与数据源的连接,并通过此链接获取、存储数据。

  数据访问对象DAO实现了使用数据源所需的访问机制。不论使用哪种数据源,DAO总是想服务者提供统一的API,需要数据访问操作的业务组件只需要和DAO暴露给使用者的简单接口,DAO将数据源的实现细节完全的隐藏起来。当底层数据源实现发生变化时,DAO暴露给使用者的接口不用变化,因此可以放心的修改DAO的实现细节,也不会对DAO使用者造成任何的影响,从本质上来说,可以吧DAO看成是业务组件与数据源之间的一个适配器。

  DAO应该被实现为无状态的对象。他不对任何的查询操作结果进行缓存。因此DAO是轻量级的对象,不存在出现线程同步问题的可能性。DAO封装了底层持久化API的细节。举例来说,当应用程序使用JDBC作为持久化手段时,DAO将所有对JDBC的使用都封装在数据访问层的内部,也不会向数据访问层之外的客户端暴露任何属于java.sql.* 或者javax.sql.*包的异常、数据结构、对象或者接口。

效果:

--用松耦合处理、程序集中控制

过滤器提供了一个处理多个请求的集中地方,其作用就像控制器。过滤器更适合处理一个目标源的多个处理程序的请求与答复。另外,控制器经常进行彼此不相关的日常服务、如验证、日志、加密等等。过滤器与处理器程序的关系不太紧张,因此可以用于各种场合。

--对持久化数据的透明访问

借助数据访问对象对数据源的封装,客户端可以透明的访问各种持久化存储介质,不必了解存储介质的位置和实现。

--为数据库数据结构提供了面向对象的视图和封装

客户端使用传输对象或者数据游标对象与数据访问对象交换数据,而不必依赖低层次的、与数据库数据结构相关的实现细节如果依赖这些实现细节,客户端就不得不了解数据库的表结构、字段名等信息。使用传输对象和数据游标,客户端可以用各一种面向对象的方式处理数据。

--简化数据移植

以DAO构成的数据访问层简化了应用程序在不同程序实现之间的移植。客户端无须了解底层的数据存储实现,因此移植动作只对DAO产生影响。

--降低了客户端的复杂度

DAO封装了所有与持久化的介质交互的代码,客户端只需使用数据访问层提供的简单API即可,这降低了客户代码执行数据访问的复杂度,提高了可维护性和开发效率。

--将所有的数据访问代码组织到一个单独的层中

数据访问对象吧实现数据访问功能的代码都组织到一个独立的层次中,将应用程序的其他部分与持久化存储介质和外部的数据源分开。由于所有数据访问操作都委派给DAO,这个层次就隔离了应用程序的其余部分和数据访问的实现。将数据访问操作集中在一个层次,使得应用程序更容易维护和管理。

--增加了一个层次

--需要设计整个类层次

--面向对象设计增加了复杂度
分享到:
评论

相关推荐

    J2EE与设计模式--

    - **三层架构**:展示层(JSP)、业务逻辑层(EJB、JavaBeans)和数据访问层(JDBC、JPA)。 - **模型-视图-控制器(MVC)**:分离应用的表示层、业务逻辑和数据模型,提高可维护性。 - **业务 Delegate 模式**:...

    J2EE指南教程---

    - **数据访问层**:负责与数据库的交互,通常通过JPA或JDBC实现。 - **资源适配器层**:连接到外部系统,如数据库、消息队列等。 - **应用程序服务器**:提供运行环境,如Tomcat、WebLogic、JBoss等,它们实现了J2EE...

    J2EE框架---笔记

    - **数据访问集成**:包括JDBC抽象层、ORM(对象关系映射)支持,如Hibernate和MyBatis,方便操作数据库。 - **Spring Boot**:Spring Boot简化了Spring应用的初始化和配置,通过"约定优于配置"的原则,让开发更快捷...

    J2EE成品项目压缩包--图书购物网

    - **数据访问层**:通过Java的DAO(Data Access Object)模式,与SQL Server数据库进行交互,实现数据的增删改查操作。 在实际开发中,项目可能还涉及到其他技术,如MVC(Model-View-Controller)设计模式用于组织...

    J2EE-Struts2-Spring-Hibernate整合的例子:添加

    Spring框架是企业级Java应用的核心框架,它不仅提供了依赖注入(DI)和面向切面编程(AOP)的功能,还集成了大量其他框架,如数据访问/集成(包括Hibernate)、Web、事务管理等。Spring的DI特性使得对象间的依赖关系...

    J2EE框架技术Struts-spring-hibernate-JSF全套详细课件

    此外,Spring还支持数据访问、事务管理、安全控制等多个领域,是现代Java应用开发的核心框架之一。 **Hibernate** 是一个强大的对象关系映射(Object-Relational Mapping, ORM)框架,它简化了Java应用与数据库之间...

    《轻量级J2EE企业应用实践-tructs+sping+hibernate整合开发》09

    在SSH整合中,Spring作为核心框架,可以管理Struts的Action实例,以及Hibernate的数据访问对象(DAO)。Spring可以提供事务管理,确保数据操作的一致性。同时,Spring还可以通过AOP来实现如日志记录、权限控制等跨切...

    j2ee:Struts2-Hibernate-Spring

    **Spring** 框架是Java企业级应用的核心,它不仅仅是一个简单的MVC框架,而是提供了全面的解决方案,包括依赖注入、AOP(面向切面编程)、事务管理、数据访问集成、Web服务等。Spring的IoC(Inversion of Control)...

    J2EE架构师手册-EN

    JPA(Java Persistence API)是J2EE中用于对象/关系映射的标准,允许开发者以面向对象的方式操作数据库。 **5. 事务管理** J2EE支持容器管理的事务(CMT)和 bean管理的事务(BMT),确保业务操作的原子性、一致性...

    《轻量级J2EE企业应用实践-tructs+sping+hibernate整合开发》--04

    Spring的DAO模式可以帮助我们将业务逻辑与数据访问层解耦。 7. **实战应用**:第04章节可能涉及实际案例,如创建一个简单的CRUD(Create, Read, Update, Delete)应用,展示如何在实际开发中运用这三个框架的整合。...

    《轻量级J2EE企业应用实践-tructs+sping+hibernate整合开发》06

    3. 数据访问层的实现:展示如何通过Hibernate的Session接口进行数据库操作,如CRUD(创建、读取、更新、删除)。 4. 事务管理:讨论Spring的声明式事务管理,如何在配置文件中定义事务边界,以及回滚规则。 5. 整合...

    J2EE大程-->类似百度知道的问答系统

    在本问答系统中,Spring主要负责管理业务对象和数据访问对象(DAO),以及实现事务控制等核心功能。 3. **Hibernate**:Hibernate是一个持久化框架,它简化了Java对象与数据库之间的交互。在本项目中,Hibernate...

    j2ee 五层web开发架构

    在J2EE五层架构中,为了支持多种类型、结构、环境和用途的异构数据库,引入了多源数据访问组件。这些组件使用DAO设计模式来实现对不同类型数据库的统一访问,从而解决了不同数据库之间的兼容性和互操作性问题。 ###...

    《轻量级J2EE企业应用实践-tructs+sping+hibernate整合开发》--02章

    在Struts和Spring的体系中,Hibernate通常作为数据访问层,提供透明的数据存取功能。 在第二章中,读者可能将学习到如何配置这三个框架,使它们相互协作。这包括设置Struts的配置文件(struts-config.xml)、Spring...

    J2EE-Struts-Hibernate

    这样,业务逻辑层和数据访问层的耦合度降低,提高了代码的复用性和可测试性。 在实际项目中,"www.pudn.com.txt"可能是一个包含教程链接、示例代码或者讨论论坛的文本文件,而"源代码"则可能包含了使用Struts和...

    《轻量级J2EE企业应用实践-tructs+sping+hibernate整合开发》10

    6. **数据访问**:演示如何通过Hibernate进行CRUD操作,包括HQL和Criteria查询。 7. **事务管理**:阐述Spring如何进行事务管理,包括编程式和声明式事务。 8. **异常处理**:讲解如何统一处理SSH框架中的异常,...

    J2ee设计模式.pdf

    典型的模式有DAO(数据访问对象)模式和Value Object模式等。 在提高性能和伸缩性的设计模式中,首先分析性能问题和伸缩性问题的原因,例如过载的数据库请求、系统资源分配不当等。然后,探讨如何应用特定的设计...

    j2ee的设计模式(最新版)

    首先,我们需要理解J2EE的主要组件和架构层次,包括客户端层、Web层、业务逻辑层(EJB或Spring)和数据访问层(JDBC或JPA)。在这些层之间,设计模式可以有效地管理它们之间的交互和通信。 1. **单例模式**:在J2EE...

    J2EE核心模式pdf

    1. **分层架构模式**:J2EE应用通常采用分层架构,包括表示层(用户界面)、业务逻辑层(服务层)和数据访问层(持久层)。这种架构有助于分离关注点,提高代码复用性和测试性。 2. **表示层**:在J2EE中,表示层...

Global site tag (gtag.js) - Google Analytics