数据存储是计算机
编程中常见的问题。CPAN Persistent 类通过一个简化数据创建、检索和管理的通用接口,使数据存储变得简单。通过面向对象的方法,可以在项目中将 Persistent 类作为自己的数据类的父类透明地使用。
持久性介绍 所有程序员都有必须解决数据持久性问题的经历。例如,对于如将文档存入文件和将事务存入
数据库等任务,即使最简单的应用程序也需要大量工作。可以将数据持久性定义为程序和存储设备之间达成的契约,该契约指定如何存储和检索数据。
CPAN 定义: “CPAN 是综合 Perl 档案网络。综合:其目的是包含可能需要的所有 Perl 资料。档案:从 1999 年 9 月至今,已有 760 兆字节。网络:全世界有超过一百个 CPAN 镜像站点。”
本文集中讲述在作者和读者事先都知道对象属性的情况下,如何使对象属性持久。本文不讨论动态发现对象属性和存储属性以外的特性(如行为)的主题,因为需要很多篇幅才能把这些主题讲清楚。
熟悉面向对象编程、数据库、Perl 和 Perl 继承将对阅读本文有帮助。
使对象属性持久只是
软件开发过程的一小部分。首先,必须确定持久性的需求。需要保存什么?需要恢复什么?在恢复存储的数据之前,需要手工编辑吗?诸如此类的问题将确定软件如何将持久数据归档。不幸地是,没有一份调查表可以确定项目确切的持久性需要。软件
设计师必须通过智能设计,定义并满足项目需求。很重要的一点是,最后的解决方案要确实是问题的解决方案,而不只是时髦的行业词语。例如,
XML 解决数据持久性问题的能力比只用砖头来建造房屋好不到哪里。
持久数据示例 Perl 文件 simple 显示了预定义的关键字集合如何能够实现简单的持久性。这种方法有很多问题:文件格式是任意的,只保存一个关键字集合,根本没有对象、数据值限制到一行文本等等。
Persistent 类的简单使用:Persistent::File
Persistent 类旨在使数据持久性变得简单。为此,您必须阅读文档。对于掌握处理持久数据的方便的预制类而言,这只是很小的代价。所以,先花上几分钟或几小时来做这件事,以后将节省您的时间。有关文档和示例,请参阅 Persistent 类主页(请参阅参考资料)。
第一个示例 first 将基于 Persistent::File 模块文档中给出的 simple 示例,并将描述达到持久性的步骤。
清单 1:定义数据
my %problems = (
'Homework 1, Problem 1' => [0,5,2],
'Homework 1, Problem 2' => [1,8,5],
'Homework 1, Problem 3' => [2,2,4],
'Homework 1, Problem 4' => [3,0,3],
'Homework 1, Problem 5' => [4,1,2],
);
首先,定义要存储在数据存储器中的数据。在 Persistent 类中,数据存储器是抽象存储设备,例如,它可以是文件或数据库。该例是自包容的,但是数据也可能来自别处。
清单 2:使用 eval 来捕获错误
use English;
eval
{
};
print "An error occurred: $EVAL_ERROR\n" if $EVAL_ERROR;
因为不希望程序在出现执行错误时终止,所以将所有操作放在 eval 语句中。English 模块使我们可以使用 $EVAL_ERROR 、而不是 $@ 来表示错误消息。
清单 3:定义数据存储器
# 从文件创建持久对象
my $equation = new Persistent::File('variables.txt');
我们在这里创建了新的 Persistent::File 对象,其内容将存储在文件 variables.txt 中。
清单 4:定义属性
$equation->add_attribute('name', 'ID', 'VarChar', undef, 80);
$equation->add_attribute('x', 'Persistent', 'Number', 0, 10);
共3页 第1页 第2页 第3页