设计模式-领域逻辑模式-SQL的分离

尽管SQL已经在商业软件中广泛应用,但它在使用中还存在一定缺陷

  • 许多应用程序开发者不能充分理解SQL,同时很多习惯用SQL的开发人员又可能组织不好程序代码。
  • 尽管现在有很多技术可以把SQL封装在程序里,但大多封装的还很牵强。

SQL分离的思路:放到独立的类里,以表结构为基础,每个表对应一个类。这些类为数据表建立了一个入口。

两种入口:

  • 为查询结果的每一行产生一个实例-行数据入口
  • 使用记录集,每个表由一个类管理-表数据入口

如果把领域模型和SQL一起考虑,可以把领域逻辑加入到入口类中,并且负责数据库的存取过程-活动记录模式

活动记录模式-一个顾客领域对象知道如何与数据库表交互


但是,还有问题:
如果领域逻辑过于复杂,领域类和表的一对一匹配也开始随着领域逻辑的加入而失效
关系数据库无法处理继承,使用其他面向对象模式非常困难
思路:
领域模型和数据库完全独立,可以让间接层完成领域对象和数据库表之间的映射。这个数据映射器处理数据库和领域模型之间的所有的存取操作,并且允许双方都独立发生变化。

行为问题:加载到内存中的对象之间需要保持一致性,即同步问题。
思路:采用工作单元 
工作单元能够跟踪所有从数据库中读取的对象以及所有以任何形式修改过的对象
负责将更新提交到数据库
编程人员将工作提交给工作单元处理,而不是直接调用明确的保存方法

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值