摘要:运行机制表数据入口包含了用于访问单个表或试图的所有,如选择插入更新删除等。其他代码调用它的方法来实现所有与数据库的交互。示例如下图分别是普通情况下充分利用特征下的表数据入口实现行数据入口充当数据源中单条记录入口的对象,每行一个实例。
1. 表数据入口
充当数据库表访问入口的对象,一个实例处理表中所有的行。
1)运行机制: 表数据入口包含了用于访问单个表或试图的所有SQL,如选择、插入、更新、删除等。其他代码调用它的方法来实现所有与数据库的交互。
表数据入口可以和表模块一起使用,它产生一个记录集数据结构由表模块处理
数据入口特别适用于事务脚本,行数据入口和表数据入口间的选择归结于如何处理多数据行,当结果集的表现便于事务脚本处理时,用表数据入口。
3)示例: 如下2图分别是普通情况下、充分利用.net特征下的表数据入口实现:
2. 行数据入口
充当数据源中单条记录入口的对象,每行一个实例。
1)运行机制:特征:行数据入口是和单条记录及其相似的对象,如数据库中的一行(该对象中数据库中的每一列变成了一个域)
问题:在哪里存放产生该模式的查找操作?鉴于选择静态查找方法不支持为不同数据源提供不同查找方法的多态,需要设置多带带的查找方法对象(这样关系数据库每一张表都一个查找方法类和入口来获得结果)
行数据入口和活动记录之间的区别:是否存在任何领域逻辑,如果存在,则是活动记录
2)使用时机:事务脚本(关于表数据入口和行数据入口之间的选择,参考表数据入口)
行数据入口可以和数据映射器一起配合使用:行数据入口从元数据自动生成,数据映射器由手动实现
3)实例:3. 活动记录
一个对象,它包含数据库表或视图中的某一行,封装数据库访问,并在这些数据上增加了领域逻辑
1)运行机制:活动记录的本质是一个领域模型,这个领域模型中的类和基数据库中记录结构十分吻合。
活动记录通常具有如下方法:
由SQL结果集中的一行构造一个活动记录实例;
为将来对表的插入构造一个新的实例;
用静态查找方法来包装常用的SQL查询和返回活动记录(也可以分离为一个多带带的类);
更新数据库并将活动记录中的数据插入数据库;
获取或设置域;
实现部分业务逻辑。
2)使用时机:适合于创建、读、更新、删除等不太复杂的领域逻辑;
优点:简单,容易创建,易于理解;
缺点:要求对象的设计和数据库的设计紧耦合,项目中难以进一步重构;当业务逻辑复杂,对象间有引用、集合和继承等关心时,难以映射到活动记录
3)示例:
其中,标圈的是领域逻辑实现。
4. 数据映射器 在保持对象和数据库(以及映射器本身)彼此独立的情况下在二者之间移动数据的一个映射器层,如下:
主要功能:分离领域和数据源
延时加载
基于元数据的映射
2)使用时机:业务逻辑复杂,数据库方案和对象模型需要彼此独立演变时
3)实例:
其中,DataMapper实现了IPersonFinder接口,用于查找方法实现。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/30072.html
摘要:领域模型应当使用细粒度的对象,这些对象应有细粒度的接口。它封装了应用的业务逻辑事务控制及其操作实现中的响应协调。 1. 事务脚本 1)调用数据库: 事务脚本将所有逻辑组成单个过程,在过程中直接调用数据库,或者只通过一个简单的数据库封存器。 2)脚本处理: 每个事务都有自己的事务脚本,尽管事务间的公共子任务可以被分解成多个子程序。 3)运行机制: a.事务脚本应该置于与其他处理表现层和数...
摘要:企业应用在某些方面要比电信软件简单得多多线程问题没有那么困难,无需关注硬件设备与软件的集成。但是,在某些方面,企业应用又比电信软件复杂得多企业应用一般都涉及到大量复杂数据,而且必须处理很多不合逻辑的业务规则。 构建计算机系统并非易事。随着系统复杂性的增大,构建相应软件的难度将呈指数增大。 同其他行业一样,我们只有在不断的学习中进步,从成功经验中学习,从失败教训中学习,才有望克服这些困难...
摘要:本文整理自于振华老师在上的演讲实录,演讲主题为在银行核心金融领域的研究与实践。年月,我们投产了行业内首个面向核心金融业务的分布式数据库,采用的是两地三中心五副本的架构模式。 作者介绍:于振华,北京银行软件开发部资深架构师,长期从事银行核心系统研发、规划,参与过多个核心信息系统建设工作,包括一、二代支付系统、第四代银行核心系统建设、分布式核心系统建设等企业级项目工作。当前主要研发方向集中...
摘要:工作单元用于维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决。工作单元控制器工作单元控制所有数据库的读操作,一旦对象被读取,将将它注册为干净的对象。 1. 工作单元 用于维护受业务事务影响的对象列表,并协调变化的写入和并发问题的解决。如下: showImg(https://segmentfault.com/img/remote/1460000018095222?w=162...
阅读 1574·2021-09-24 10:38
阅读 1503·2021-09-22 15:15
阅读 3060·2021-09-09 09:33
阅读 906·2019-08-30 11:08
阅读 640·2019-08-30 10:52
阅读 1255·2019-08-30 10:52
阅读 2347·2019-08-28 18:01
阅读 523·2019-08-28 17:55