知识卡片

数据访问对象与表数据入口的关系,及命名考量

普通读书笔记卡

内容

J2EE设计模式文献里的”数据访问对象”(Data Access Object,DAO)本质上就是表数据入口的一种——那些文献里演示了如何用查询方法返回数据传输对象的集合,只是原书作者没有明确说这个模式是否始终基于”表”这个概念,从其论述和意图可以推断出它对应的其实要么是表数据入口、要么是行数据入口,两种情形都可能存在。作者选择在本书里另起一个名字,而不是沿用”数据访问对象”这个更早、更流行的说法,主要出于两个考虑:一是作者认为这个模式本质上只是”入口”这个更普遍概念的一种特殊用法,希望名字本身就能体现这层从属关系;二是”数据访问对象”及其缩写DAO在微软的技术世界里已经有另一套特定含义,沿用这个名字容易在跨平台讨论时造成混淆。可迁移启发:给一个模式或概念起名字时,不能只考虑它在自己所在的技术圈子里是否贴切,还要留意这个名字在其他技术生态里是否已经被赋予了不同含义——同一个术语在不同平台社区里发生语义分裂是真实存在的风险,值得在命名时主动规避。

参考来源

- 位置:《企业应用架构模式》第二部分"模式"之"第10章 数据源架构模式"之"10.1.3 进一步阅读"(源文件:_epub-src/OEBPS/Text/000077.html) - 结论依据:原文说明"[Alur er al.]讨论了数据访问对象模式,实际上它也是一种表数据入口……我在这里使用了另外一个名字,部分因为是我认为该模式是普通入口概念的一个特殊使用,而且我希望它的名字能反映这一点。另外,'数据访问对象'术语及其缩写DAO在微软世界中有其特定的含义",直接支撑本卡结论。 - 原始内容:"数据访问对象"(Data Access Object)术语及其缩写DAO在微软世界中有其特定的含义。