注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

多多的爹

 
 
 

日志

 
 

数据访问模式1  

2007-05-30 12:07:25|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

《数据访问模式》是一本本身定位非常好的书。但是,在以我恶毒的小人眼光看来,作者大概是为了骗取稿费和提交书的层次,把这个命题写得无比的啰嗦、反复、晦涩和专业。对于已经明白的读者来说,看一遍能够系统归纳已有经验,但是太浪费时间;对于仍然在门外摸索的读者来说,是一次不亚于坐牢的苦刑。

当然,这其中做翻译的两位大侠,也起了很重要的推波助澜的作用。从某些字里行间来看,他们是大概是使用了“金山快译”之类的软件。这样看来,应该也是某些学生枪手的作品,最后冠以XX的名称发表。

恶毒的说了这么多,但不能掩盖书中的精华。只不过往往寥寥数语就能说清楚的事让人这么一写,变成了复杂无比的事物,总是有些不甘心。在继续阅读此书的同时,就简单的说明一下其中的含义。免得自己以后再看一次的时候仍然是在煎熬中度过。

刚看完第一部分,其主要思想是解耦,以正交的层次作为编码的基础。每层都负责各自的任务,并对上级提供一个抽象的接口,完全屏蔽技术细节。在第一部分中提到了两个层次:

1.  将对数据库的访问(查询,增删改等SQL语句封装)作为最底层:

创建数据访问接口IdataAccessor,此接口定义了查询、插入、更新和删除四个方法(QueryInsertUpdateDelete),并且每个方法提供了组成SQL语句的参数。实现此接口的对象,封装了connectionrecordset的操作。首先会根据所传参数组成SQL语句,然后调用相应的execSQL等方法。最后将执行结果(比如Recordset集)返回给上层。上层可以在不知道数据库的访问细节的情况下实现各种数据库操作。

当然为了真正的让上层不了解数据库细节,返回的Recordset集也是需要封装一次的。

此为典型的Adapter模式的应用。

 

2.  将表的数据映射等操作,作为第二层。在书中,被称为主动域

书里说得很玄乎,名字起得也让人摸不着头脑,其实说白了,就是用类的形式表示一个表。从设计模式的角度来说,应该是Facade模式。每个域就是一个类,每个类对应一个表,类中的成员对应于表中的字段。通过这样的映射,可以去除各种数据库的差异,并且可以对数据库进行有必要的补充和删减。

 

3.  在了解主动域时,还提到了表关联的处理。可以在主动域中通过对象的关联来表示

数据库中的外键问题,在实现中用对另一个对象的引用来实现。

但于此有个很大的问题。表A中有个外键指向了表B。对象A和对象B分别映射这两个表。相应的对象A中有一个对象B的引用。当A更新的时候,可能对B的引用已经改变了。那么此时是否也要更新对象B了?如果更新了,是不是对效率问题有影响呢?

 

 

 

  评论这张
 
阅读(5)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017