数据源架构模式

Table Data Gateway

    • 充当数据库表访问入口的对象.一个实例处理一个表中所有的行.
      • 在应用逻辑中混杂SQL语句会引起问题.

      • 表数据入口包含了用于访问单个表或者视图的所有SQL.其他代码调用它的方法来实现所有与数据库的交互.

    • 运行机制
      • 其用于数据读写,因此是无状态的.

      • 每个方法都将输入参数映射为SQL调用并在数据库连接上执行该语句.

      • 从查询返回信息
        • 返回简单数据结构,如Map.缺点是破坏了编译时检查.

        • 采用额外的数据传输对象.

    • 使用时机
      • 表数据入口同表模块可以很好地使用.它产生一个记录集数据结构,然后由表模块处理.

      • 它特别适合于事务脚本.

      • 一般不和领域模型一起使用.

      • 表数据入口能够很好滴运行在任何平台上,因为它只是对SQL语句的一种包装.

  • Row Data Gateway
    • 充当数据源中单条记录入口的对象.每行一个实例.
      • 其提供了看起来像记录结构中记录的对象.但是可以用编程机制访问的对象.对数据源的访问细节隐藏在接口之后.

    • 运行机制
      • 它能够实现从数据源类型到内存中类型的任意转换.其尤其适合于事务脚本.

      • 一般使用单独的查找方法对象.这样数据库中的一张表会有一个查找方法类和一个入口来获得结果.

      • 其和活动记录的细微区别在于后者含有领域逻辑.

    • 使用时机
      • 使用事务脚本时,通常使用行数据入口,来分离数据库访问代码,并且易于在不同的事务脚本中重用.

      • 当其和事务脚本配合使用时.可能会发现业务逻辑在多处脚本中重复出现,
        • 此时,将逻辑从脚本移动到入口时,入口就演变成了活动记录.这样减少了重复的业务逻辑.

  • Active Record
    • 封装了数据库访问的对象,包含数据库表或者视图中的某一行.并在这些数据之上增加了领域模型.
      • 既有数据又有行为的对象.

      • 把数据访问逻辑置于领域对象中.

    • 运行机制
      • 本质是领域模型.

      • 该模型中的类和数据库中的记录结构匹配.

      • 类的每个域对应表的每一个列.因此不需要映射.

      • 每条活动记录负责向数据库保存和加载数据,并处理作用于数据之上的领域逻辑.

      • 其和数据库间紧密耦合.所以常用静态查找方法.

    • 使用时机
      • 适用于不太复杂的领域模型(増删改查).

      • 初始设计领域模型时,会在活动记录和数据映射器之间二选一.
        • 活动记录.简单,易于创建.但是,仅当活动记录对象和数据库表直接对应,即同构时,比较有效.

        • 其要求对象的设计和数据库的设计紧密耦合.不利于未来的重构.

      • 在使用了事务脚本,并且开发时产生了很多的代码复制.那么
        • 将表包装为入口,接着开始行为迁移,使表演化为活动记录.

  • Data Mapper

    • 在保存对象和数据库(及映射器本身)彼此独立的前提下,在对象和数据库之间进行数据移动的层.
      • 对于一个具有复杂业务逻辑的对象模型,其对象方案和关系方案是不匹配的.

    • 运行机制

      • 出于测试,或者使用单个领域层对应不同的数据库层时,可以替换整个映射器层.

      • 由于对象间彼此紧密联系,所以必须在某刻停止读取,否则可能在一次查询中返回整个数据库.

        • 此时,使用延迟加载.因此,内存中的对象不能完全忽略映射层.

    • 使用时
      • 常和领域模型一起使用.用以在数据库方案和对象模型需要独立演变时.

      • 缺点是引入了新的层次.因此只有在业务逻辑复杂时才使用.

时间: 2024-10-18 19:18:41

数据源架构模式的相关文章

数据源架构模式之活动记录

一.概念 活动记录(Active Record):一个对象,它包装数据库表或视图中某一行,封装数据库访问,并在这些数据上增加了领域逻辑. 对象既有数据又有行为.活动记录使用直截了当的方法,把数据访问逻辑置于领域对象中. 二.实现简单活动记录 活动记录在php许多框架中都有应用,如cakephp. Php代码   <?php /** * 行数据入口类 */ class OrderGateway { /*定义元数据映射*/ private $_name; private $_id; public f

《企业应用架构模式中文版》学习笔记(转)

本书先介绍了一些企业应用开发的基础知识,比如分层架构.WEB表现.业务逻辑.数据库映射.并发.会话.分布策略等等.通过使用场景.解决方案.UML等手段详细介绍了设计模式(包括一些常用的设计模式GOF23和本书上新创的设计模式).了解书中这些模式是干什么的.它们解决什么问题.它们是如何解决问题的.这样,如果你碰到类似的问题,就可以从书中找到相应的模式.可以为你节约成本.缩短项目周期时间.避免风险,以确保项目能够完美的完成. 一.三个基本层次:表现层.领域层.数据源层 层次 职责 表现层 提供服务,

企业应用架构模式pdf

下载地址:网盘下载 内容简介  · · · · · · <企业应用架构模式>作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的.关于解决方案的.不可或缺的手册.<企业应用架构模式>获得了2003年度美国软件开发杂志图书类的生产效率奖和读者选择奖.<企业应用架构模式>分为两大部分.第一部分是关于如何开发企业应用的简单介绍.第二部分是<企业应用架构模式>的主体,是关

企业应用架构模式 pdf下载

从大学到现在,这本书也许我反反复复地读了不下十遍,可是这次终于有了勇气把他标注为看过,因为直到今天我才自信自己真的理解了里面所讲的架构模式. 对于现在的互联网时代,所有的开发思想都是强调简洁,强调"敏捷",甚至曾经流行一时的OOD竟然有被嫌弃的趋势 需要学习的朋友可以通过网盘免费下载pdf版 (先点击普通下载-----再选择普通用户就能免费下载了)http://putpan.com/fs/fyibfens4hu6b61d5/ <企业应用架构模式>作者是当今面向对象软件开发的

分层与架构模式

1 企业应用计算的演变 这个我们应该是在学HTML的时候就已经学习了一部分了,现在再来回忆一些理论知识! •主机/哑终端的集中计算模式 大型主机管理和控制应用程序的所有方面,包括业务处理.数据管理和屏幕显示.使用者一般通过只有一个屏幕.一个键盘和一根主机连接线的“哑终端”与主机的应用程序进行交互. 缺点: 一台计算机中进行全部的处理. 应用程序非常难于维护. 专用特性使得它们非常难于集成其他平台上的其他应用程序 •客户机/服务器计算模式 –分布式客户/服务器 (Client/Server,简称C

Hibernate(1)——数据访问层的架构模式&lt;转&gt;

数据库的概念.逻辑.数据模型概念 应用程序的分层体系结构发展 MVC设计模式与四层结构的对应关系 持久层的设计目标 数据映射器架构模式 JDBC的缺点 Hibernate简介 迅速使用Hibernate开发的例子 Hibernate的核心类和接口,以及他们的关系 POJO和JavaBean的比较 之前的一篇总结文章: 数据库精华知识点总结(1)—数据库的三层模式和二级映像,E-R(实体联系图)图,关系模型 简单来说,就是在软件开发领域,可以用模型表示真实世界的实体.针对数据库就分为: 概念模型(

iOS架构模式--解密 MVC,MVP,MVVM以及VIPER架构

在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换? 相信你会找到以上问题的答案,如果没找到请在评论中指出. 你将要整理出你在 iOS 环境下所有关于架构模式的知识.我们将带领大家简要的回顾一些流行的架构,并且在理论和实践上对它们进行比较,通过一些小的例子深化你的认知.如果对文中提到的一些关键词有兴趣,可以点击连接去查看更详细的内容. 掌控设计模式可能会使人上瘾,所以要当心,你可能会对一些问题清晰明了,不再像阅读之前那样迷惑,

《企业应用架构模式》(POEAA)读书笔记

原文地址:<企业应用架构模式>(POEAA)读书笔记作者:邹齐龙(技术-5013 什么是架构 Rolph Johnson认为:架构是一种主观上的东西,是专家级的项目开发人员对系统设计的一些可共享的理解 架构中包括一些决定,开发者希望这些决定能尽早作出,因为在开发者看来它们是难以改变的. 如果你发现某些决定不像你想象中的那么难以改变,那么它就不再与架构相关 理解: B/S (SmartClient.C/S) 架构, DotNet 架构, J2EE架构 企业应用的特点 涉及到持久化数据 很多人同时

iOS - 架构模式 - 解密 MVC、MVP、MVVM、VIPER架构

在 iOS 中使用 MVC 架构感觉很奇怪? 迁移到MVVM架构又怀有疑虑?听说过 VIPER 又不确定是否真的值得切换? 相信你会找到以上问题的答案,如果没找到请在评论中指出. 你将要整理出你在 iOS 环境下所有关于架构模式的知识.我们将带领大家简要的回顾一些流行的架构,并且在理论和实践上对它们进行比较,通过一些小的例子深化你的认知.如果对文中提到的一些关键词有兴趣,可以点击连接去查看更详细的内容. 掌控设计模式可能会使人上瘾,所以要当心,你可能会对一些问题清晰明了,不再像阅读之前那样迷惑,