设计模式- 数据源架构模式

数据映射器(Data mapper)
在保持对象和数据库彼此独立的情况下,在二者之间移动数据的一个映射器层
数据映射器是分离内存对象域数据库的一个软件层。其职责是在内存对象与数据库之间传递数据并保持它们彼此独立。

运行机制

分离领域和数据源是数据映射的主要功能


一个应用可以有一个或者多个数据映射器。

  • 若映射器是硬编码的,最好为每个领域类或领域层次的根使用一个数据映射器
  • 若正在使用元数据映射,一个映射器就足够,但是查找方法太多。

处理查找方法:领域对象也可能调用查找方法,可以用延迟加载
避免领域对象和数据映射器之间的依赖。
把数据映射到领域对象的域,若映射器需要访问领域对象中的域(属性),如何处理?

  • 可以采用一些公共(Public)方法,支持领域逻辑不需要的映射器,但需要状态域保护,当这些方法使用超出数据库加载的上下文时抛出异常。
  • 把数据映射器和领域对象打包在一起会降低映射器的可见性,但导致更加复杂的依赖关系。

基于元数据的映射?
把元数据作为数据存储在类或单独的完文件中。优点:映射器的变化通过数据处理,无需更多源代码和代码生成或反射程序。

使用时机

  • 数据库方案和对象模型需要彼此独立演变,通常和领域模型一起使用。
  • 业务逻辑复杂时

示例

建立类,及和类同构的表结构

查找操作
分离查找方法。为了允许领域对象调用查找方法,可用分离接口把查找方法的接口从映射器中分离出来,放到领域层可见的单独包中。用于查找的接口置于领域包中。

加载对象的两种方法。
  • 构造函数。见前面的处理过程。
  • 空对象。先创建一个空对象,然后设置方法来加载数据

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值