博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十天-《企业应用架构模式》-数据源架构模式
阅读量:6760 次
发布时间:2019-06-26

本文共 1275 字,大约阅读时间需要 4 分钟。

1. 表数据入口

  充当数据库表访问入口的对象,一个实例处理表中所有的行。

1)运行机制:

    表数据入口包含了用于访问单个表或试图的所有SQL,如选择、插入、更新、删除等。其他代码调用它的方法来实现所有与数据库的交互。

    表数据入口可以和表模块一起使用,它产生一个记录集数据结构由表模块处理

2)使用时机:

    数据入口特别适用于事务脚本,行数据入口和表数据入口间的选择归结于如何处理多数据行,当结果集的表现便于事务脚本处理时,用表数据入口。

3)示例:

    如下2图分别是普通情况下、充分利用.net特征下的表数据入口实现:

    

    

2. 行数据入口

  充当数据源中单条记录入口的对象,每行一个实例。

1)运行机制:

    特征:行数据入口是和单条记录及其相似的对象,如数据库中的一行(该对象中数据库中的每一列变成了一个域)

    问题:在哪里存放产生该模式的查找操作?鉴于选择静态查找方法不支持为不同数据源提供不同查找方法的多态,需要设置单独的查找方法对象(这样关系数据库每一张表都一个查找方法类和入口来获得结果)

    行数据入口和活动记录之间的区别:是否存在任何领域逻辑,如果存在,则是活动记录

2)使用时机:

    事务脚本(关于表数据入口和行数据入口之间的选择,参考表数据入口)

    行数据入口可以和数据映射器一起配合使用:行数据入口从元数据自动生成,数据映射器由手动实现

3)实例:

    

3. 活动记录

  一个对象,它包含数据库表或视图中的某一行,封装数据库访问,并在这些数据上增加了领域逻辑

1)运行机制:

    活动记录的本质是一个领域模型,这个领域模型中的类和基数据库中记录结构十分吻合。

    活动记录通常具有如下方法:

      由SQL结果集中的一行构造一个活动记录实例;

      为将来对表的插入构造一个新的实例;

      用静态查找方法来包装常用的SQL查询和返回活动记录(也可以分离为一个单独的类);

      更新数据库并将活动记录中的数据插入数据库;

      获取或设置域;

      实现部分业务逻辑。

2)使用时机:

    适合于创建、读、更新、删除等不太复杂的领域逻辑;

    优点:简单,容易创建,易于理解;

    缺点:要求对象的设计和数据库的设计紧耦合,项目中难以进一步重构;当业务逻辑复杂,对象间有引用、集合和继承等关心时,难以映射到活动记录

3)示例:

    

    其中,标圈的是领域逻辑实现。

4. 数据映射器

  在保持对象和数据库(以及映射器本身)彼此独立的情况下在二者之间移动数据的一个映射器层,如下:

    

1)运行机制:

    主要功能:分离领域和数据源

    延时加载

    基于元数据的映射

2)使用时机:

    业务逻辑复杂,数据库方案和对象模型需要彼此独立演变时

3)实例:

    

    其中,DataMapper实现了IPersonFinder接口,用于查找方法实现。

转载地址:http://gabeo.baihongyu.com/

你可能感兴趣的文章
按钮模式来自官方的 windows 7 快捷键大全
查看>>
《JAVA与模式》之单例模式(转载)
查看>>
ajax中的异步机制导致的问题
查看>>
java质数判断
查看>>
Android JNI和NDK学习(03)--动态方式实现JNI(转)
查看>>
Java-异常总结
查看>>
如何提升你的面试机会?
查看>>
JavaScript HTML5 手机版手机版网站起码要实现一些基本的功能吧:
查看>>
递归获取XML元素
查看>>
Linux系统教程 标准输入/输出和重定向
查看>>
JQuery的Ajax跨域请求的
查看>>
Lintcode--005(最长公共子序列)
查看>>
转: 微信开源C/C++ RPC框架PhxRPC
查看>>
Delphi Form的释放和隐藏:free,hide,close
查看>>
[物理学与PDEs]第1章第8节 静电场和静磁场 8.1 静电场
查看>>
Chrome 62 的大坑:修改密码后始终使用保存的旧密码登录
查看>>
如何在Kubernetes部署期间正确处理DB模式
查看>>
甲骨文11.9亿美元收云解决方案供应商Aconex,预计明年上半年完成
查看>>
利用 Universal Transformer,翻译将无往不利!
查看>>
Python 做图片清晰度识别
查看>>