PoEAA笔记-映射到关系数据库-3.6 使用元数据

3.6 使用元数据

在本书中,我绝大部份的例子都采用手写代码,利用简单和重复性映射,这样会导致代码简单和重复,而重复代码是设计上有问题的一个标志。可以通过委托和集成分解出通用行为,但还有一种成熟的方法是使用元数据映射。

元数据映射基于把映射浓缩到源数据文件的方法,元数据文件详细描述数据库中的列如何映射到对象的域。这里的关键在于:一旦有了元数据,就可以通过代码生成或者反射编程来避免重复性代码。

使用元数据使我们可以用用少量的元数据表达很多含义,一行元数据可以像这样传递某些信息:

<field name="customer" targetClass = "Costomer", dbColumn="custID",targetTable="customers" lowerBound = "1" upperBound = "1" setter="loadCustomer" />

从这些信息可以英译读写代码,自动生产特别的连接操作,完成所有SQL,加强关系的多样性,甚至可以做许多奇特的事情,比如在引用完整性存在的情况下计算写顺序等。这也就是商业O/R映射工具倾向于使用元数据的原因。

当使用元数据映射的时候,有必要构造对内存对象的查询。一个查询对象允许根据内存对象和数据来构造查询,在这种情况下,开发者不需要知道SQL或关系数据库方案的细节。查询对象可以使用元数据映射吧基于对象域的表达式翻译成对应的SQL。

一直使用这种方法就可以建立一个资源库,它能很大程度上从视图隐藏数据库,任何到数据库的查询都可以做成资源库基础上的查询对象,并且开发者不用分辨对象是从内存还是从数据库中找回。资源库在有丰富领域模型的系统下工作良好。

个人感受:有了元数据,就可以通过代码生成和反射编程消除重复性代码,还可以通过源数据生成SQL。一直用这种方法可以建立一个资源库,它能在很大程度上隐藏数据库,任何到数据库的查询可以做成资源库基础上的查询对象,并且开发者不用分辨对象是从内存还是数据库找回。资源库在有丰富领域模型的系统下工作良好

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值