分享
 
 
 

关于对象持久类框架的构架设计(Part1)

王朝delphi·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

关于对象持久类框架的构架设计

用语定义:

1. 世界:在本文中世界定义为系统范围内的所有,包括数据库、数据库记录、对象实例、对象等(名词)

2. 类:是定义一组相似对象的共同特征标准集合,表现为数据结构(属性与关系)与行为(操作与)。(名词)

3. 对象:一个通过状态与行为区别于其他实体的实体,其封装了状态与行为,状态表现为关系与属性,行为则通过操作与方法来体现。对象是一个类的概念上的实体(也就是现实存在的类)。(名词)

4. 对象元数据:描述对象属性的数据组,它包含的了对象数据的状态以及位于持久机制上的状态。在本文中指的是一组数据可以表示对象的属性(名词)

5. 属性对象:作为一个对象的属性而存在的对象(名词)

6. 对象集:一组同一类的对象。(名词)

7. 实例:在内存中存在的一个具体的对象。(名词)

8. 实例集:一组对象的实例。(名词)

9. 数据库记录:在数据库中储存的具体对象(也就是对象属性与关系)以及对象集。为一条记录或包括一组记录(来记录关系对应)(名词)

10. 实例化:创建一个对象并设置其属性与关系(通过数据库记录或其他方式)。(动词)

11. 对象存贮:将对象的属性与关系映射为数据库记录的操作。(动词,名词)

12. 对象引用:若可以通过一项或几项对象属性的具体特征,在一组对象中得到一个具体的对象(并不一定是实例),则称这一项或几项对象属性的特征为对象引用。(名词)

13. 程序:本文中的程序特指Borland公司的Delphi Object Pascal语言所编制的程序,也许在文中有其他的语言出现,我将会特别指明。

框架的构想:

需要建立一个持久框架以完成对象以及其与其它对象的关系的保存获取,主要针对关系型数据库,目的是使对象独立于数据库以及数据存取机制,简化面向对象程序的编写,使得对象的设计、实现得以一致化。

根据《The Design of a Robust Persistence Layer For Relational Databases》[i]以及《Implementing Business Objects》[ii]、《Persistence Brings Success》[iii]、《Rolling your own Object Persistence Framework》[iv] 这些文章的表述我们知道应该分离对象本身以及其持久化机制,可以保持灵活性。因此我们可以锁定四个问题域:对象、对象元数据以及持久化和映射机制。(关于上述文章描述的持久化系统的讨论我将在后面进行)

对象

为了建立持久对象框架,我们必须对对象应具有的通用属性以及操作做出统一的规划,也就是定义对象类的属性与操作:

l 对象应具有一个唯一的(针对世界而言)标识(ID);由于数据库的不同ID的表表现方式也不一致,可能是字符也可能是数字

l 对象可以通过统一的Getter/Setter机制,得到其属性;在其他语言中也许有动态映射(反射机制)的实现,但在Delphi中没有,我认为使用反射机制可能会损失系统设计的一致性。

l 对象可以通过对其自己的元数据对象操作以保存,载入,以及从世界中删除。

l 对象具有如下的状态:新创建(New),空载入(NULL Loading),元数据载入(Metadata Loading),持久载入(Persistence Loading),操作中(Operating),元数据保存 (Metadata Save),持久保存(Persistence Save),元数据修改(Modify Metadata),持久修改(Modify Persistence)。

对象的元数据

对象的元数据可以分离对象的数据实例与对象实例,可以在内存中对于数据本身作映射,同时也可以通过数据构建对象。它是实现灵活的对象持久机制的关键。

对象的元数据需要:

以一个通用的形式描述对象的属性以及数据。

可以以列表的形式描述对象组的属性以及数据。

保存类的信息

根据属性数据构造对象(也就需要保存类的信息)

持久化

持久化分为:对象的属性到持久机制的映射以及对象关系到持久机制的映射。

持久化应该可以:

1. 提供对应多种的映射机制,可以对于文本、关系数据库进行持久操作。

2. 完整的封装持久机制,对象只需要对持久化对象发送Save、Retrieve、Delete等消息就可以完成自身的保存、获取、删除等工作。

3. 针对条件进行对象的操作。

4. 提供一个关系处理机制来处理对象间关系的持久化。

5. 提供事务支持,由于对于属性,持久化需要:保持对象属性的数据完整,进行对象属性的原数据保护;同步实例的属性与数据库中的属性值(世界中的多任务并发操作)。

6. 妥善处理实例与世界中其他实例(也许不在同一台机器上)的一致性。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有