知识卡片
元数据映射的核心思想
内容
手写数据库列到对象域的映射代码,往往简单但高度重复,而重复代码本身就是设计有问题的信号。元数据映射提供了一种更成熟的解法:把”某列如何映射到某个域”这类信息浓缩进元数据文件,一旦有了这份元数据,就可以通过代码生成或反射编程自动产生对应的读写代码,避免手写重复代码——一行元数据能同时表达列名、类型、目标域等多重信息,据此可以自动定义读写代码、生成连接操作、完成SQL拼装,甚至处理引用完整性存在时该按什么顺序写数据这类复杂问题,这也是商业O/R映射工具普遍采用元数据驱动方式的原因。基于元数据映射,还可以进一步搭建查询对象(让开发者用内存对象和数据的语言构造查询,而不必了解SQL或数据库方案细节)和资源库(在此基础上把数据库进一步隐藏到视图之外,开发者甚至不用分辨某个对象是来自内存还是数据库,尤其适合领域模型丰富的系统)。作者本人在书中坚持手写示例而非直接展示元数据方案,理由很实际:手写例子更容易先理解,等真正熟悉了这些映射模式、能亲手写出应用之后,才更容易领会如何用元数据把同样的问题变得更简单——元数据是”吃透手工做法之后”的进阶收益,而不是绕过理解的捷径。
参考来源
- 位置:《企业应用架构模式》第一部分"表述"之"第3章 映射到关系数据库"之"3.6 使用元数据"(源文件:_epub-src/OEBPS/Text/000023.html)
- 结论依据:原文说明"元数据映射基于把映射浓缩到元数据文件的方法……一旦有了元数据,就可以通过代码生成或者反射编程来避免重复性代码……一个查询对象允许根据内存对象和数据来构造查询……一直使用这种方法就可以建立一个资源库,它能在很大程度上从视图隐藏数据库……尽管元数据有许多优点,我在本书里仍一直专注于手写的例子,因为我觉得它们首先比较容易理解",直接支撑本卡结论。
- 原始内容:你一旦熟悉了这些模式,并且能用它们手写出自己的应用,就能领会到如何使用元数据来使问题更简单。