data representation layer

上个周末我去了一个技术的沙龙,主要的内容是关于开源软件框架应用与软件架构。很有意思的一个讲座以后还要再去听。目前我国的软件有很多的平台和编程语言,比如 .net j2ee 等,在每个语言里面还有相应的框架,比如 struts , aop 。。。我们的编程一般不用从头开始,而是运用某一种平台,给予某一种框架,进行开发,现在的框架比较多,也不能都应用,在应用中要注意的问题就是,最好直接继承自 pojo 对象,我们用起来直接用就好,而不用实现他的某一个特定的接口。

在 o/r mapping 的层面上,有几个比较好的开源的工具,比如说 jdo,caster,hibernate, 这些东西相比较 Entity Bean 来说是比较 light-weight 的,比较简单。在这个层面上我们有很多的选择,很多中间件和平台都有这方面的产品。比如我们的 bv 平台,他就是使用 ContentManager,ContentList,Content,BVI_GenericDBManager 这样的东西来进行我们的最底层的数据库操作的。其实说白了,这些东西就是语言中的抽象出来的 object 和 relationship database 之间的互操作。最最常用的就是直接使用 sql 语言,在此之上,我们人为的对于系统进行分级,这数据库和对象之间的操作很自然的就是这一级。我们在定一个类的时候,比如一个 Person 类,我们同时定义她的 PersonManager 和 PersonContainer 这样子的类,我们在 manager 里面可以抽象出 Person 的增删改等等操作,比如添加一个 person 到数据库,我们直接调用 p.Save(); 就可以了,甚至我们可以对它进行更加深层次的抽象,这时候就需要我们放弃对于数据库的概念,这时候数据库对于编程序的人就是透明的了,程序人员只用调用相应的函数就好了。这时候数据库就是一个更大规模的 Container , container.Add(person); 就可以了。其实,我们还可以有很多其他的 Container ,这些 container 都是装载在内存中的,可以形成各自相应的集合,相互之间是无关的,这些只是初步。我们可以继承 Person 类,甚至可以定义一个 IPerson 的接口,这样对于我们实现其多态来还是比较有益的。在这样的基础上我们就能实现更加面向对象,更加抽象的环境。

一个同学告诉我,在 .net 的比较简单的应用中,没有 data representation layer 这个层次的东西了,都用 aspx 直接调用存储过程。。。各村有个村的高招。

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus