Perl有ORM吗?

时间:2008-11-11 16:42:30

标签: perl orm

create table person
(
    name varchar(15),
    attr1 varchar(15),
    attr2 varchar(1),
    attr3 char(1),
    attr4 int
)

如何通过采用上面的简单表并将其映射到Perl对象,在Perl中使用基本ORM?接下来,我想使用一些标准系统Perl像语法一样执行基本操作,例如选择结果。例如:

@myResults = findAll(attr1 == 3 && attr2 =~ /abc/);

3 个答案:

答案 0 :(得分:26)

规则#1,不要自己编写。

CPAN上有很多ORM,包括......

  • DBIx::Class - 目前在人气方面可能排名第一
  • Rose::DB::Object
  • Fey::ORM - 我自己的贡献,最值得注意的是基于Moose,这意味着你可以在基于ORM的课程中获得Moose的所有力量。

答案 1 :(得分:0)

(Chiming late)Data :: ObjectDriver(也在CPAN上)提供了很大的灵活性,特别是如果分区和缓存在您的需求列表中。

答案 2 :(得分:0)

我建议使用DBIx :: Class。这里有一些代码来反省50个表遗留数据库(在模式中指定了关系):

#!/usr/bin/perl
use warnings;
use strict;
use DBIx::Class::Schema::Loader qw/ make_schema_at /;

make_schema_at("Zotero::Schema",
               {
                   # components => ['InflateColumn::DateTime'],
                   debug => 1,
                   relationships => 1,
                   dump_directory => './lib' ,
               },
               ["dbi:SQLite:dbname=../zotero.sqlite", "",""]);