Class::DBI文档翻译(2)
时间:2005-11-01 来源:含笑汉
模块介绍
如何搭建
一.模块介绍
Class::DBI模块提供了一个数据库联接的简单抽象层。
它不仅提供了一个对象-关系映射层,还在应用层次上提供了一些更为复杂的数据库机制实现接口函数(如触发、参照完整性、级联删除等)。当你使用的数据库不支持这些机制或者是当你使用多个数据库,而这些数据库实现这些机制的方法不完全相同时,Class::DBI提供的这些接口对你就非常的有用了。
简而言之,Class::DBI的目标就是使得对存储于关系型数据库中的数据的操作变的简单。
二.如何搭建
1.必须条件
a.数据库必须建好;
b.DBI.pm模块必须已经安装;
c.数据库的驱动模块DBD:: driver必须已经安装。关于DBI模块及数据库的驱动模块的详细信息请参考,DBI相关文档。
2.为要存储的对象建表
Class::DBI模块使得数据对象与数据库中的表形成一对一的关系,所以要想使用该模块,你就必须在数据库中建立相应的表。
使用上面的CD的例子,我们可以通过如下语句建立cd表:
CREATE TABLE cd (
cdid INTEGER PRIMARY KEY,
artist INTEGER, # references 'artist'
title VARCHAR(255),
year CHAR(4),
);
3.创建一个应用基类
总的来说,创建一个基类以供以后的数据类继承,要比每个数据类都要直接继承Class::DBI要省事的多。这样也便于用户对Class::DBI的方法进行重载和扩展。
package Music::DBI;
use base 'Class::DBI';
4.建立数据库联接
Class::DBI需要知道如何联接数据库,这是通过DBI的set_db方法实现的。
Music::DBI->set_db('Main', 'dbi:mysql:dbname', 'user', 'password');
通过继承基类的连接,所有的数据类共享这一联接。Set_db的第一个参数是数据库联接的名称,在这里必须设置为“Main”,至于原因请参考Ima::DBI中的set_db()方法。
5.创建数据类
package Music::CD;
use base 'Music::DBI';
因为每个数据类都继承至数据基类,所以就不必每次都要写那些数据库联接的代码。
6.声明对应表的名称
Music::CD->table('cd');
7.声明字段
Music::CD->columns(All => qw/cdid artist title year/);
这里你只是简单的将所有的字段都罗列出来(对于key键单一的表),但是对于那些key键为多字段的表来说,就应该进行如下的声明:
Music::CD->columns(Primary => qw/pk1 pk2/);
Music::CD->columns(Others => qw/foo bar baz/);
关于如何更有效的使用columns,请参考下面的“懒人思想”部分。
Ok,到这里你就已经拥有了一个数据类,该类不但具有create、retrieve、search、update以及delete等方法对所对应的表进行操作,而且还可以使用accessors、mutators等对该类的columns进行操作。