NAME Data::Model - model interface which had more data sources unified, a.k.a data/object mapper SYNOPSIS package Your::Model; use base 'Data::Model'; use Data::Model::Schema; use Data::Model::Driver::DBI; my $dbfile = '/foo/bar.db'; my $driver = Data::Model::Driver::DBI->new( dsn => "dbi:SQLite:dbname=$dbfile", ); base_driver( $driver ); install_model user => schema { key 'id'; columns qw/ id name /; }; # create database file unless (-f $dbfile) { my $dbh = DBI->connect($dsn, '', '', { RaiseError => 1, PrintError => 0 }); for my $sql (__PACKAGE__->as_sqls) { $dbh->do( $sql ); } $dbh->disconnect; } # in your script: use Your::Model; my $model = Your::Model->new; # insert my $row = $model->set( user => { id => 1, } ); my $row = $model->lookup( user => 1 ); $row->delete; DESCRIPTION Data::Model is can use as ORM which can be defined briefly. There are few documents. It is due to be increased in the near future. SCHEMA DEFINITION One package can define two or more tables using DSL. see Data::Model::Schema. METHODS new([ \%options ]); my $model = Class->new; lookup($target => $key) my $row = $model->lookup( user => $id ); print $row->name; lookup_multi($target => \@keylist) my @row = $model->lookup_multi( user => [ $id1, $id2 ] ); print $row[0]->name; print $row[1]->name; get($target => $key [, \%options ]) my $iterator = $model->get( user => { id => { IN => [ $id1, $id2 ], } }); while (my $row = $iterator->next) { print $row->name; } # or while (my $row = <$iterator>) { print $row->name; } # or while (<$iterator>) { print $_->name; } set($target => $key, => \%values [, \%options ]) $model->set( user => { id => 3, name => 'insert record', }); delete($target => $key [, \%options ]) $model->delete( user => 3 ); # id = 3 is deleted ROW OBJECT METHODS row object is provided by Data::Model::Row. update my $row = $model->lookup( user => $id ); $row->name('update record'); $row->update; delete my $row = $model->lookup( user => $id ); $row->delete; TRANSACTION see Data::Model::Transaction. DATA DRIVERS DBI see Data::Model::Driver::DBI. DBI::MasterSlave master-slave composition for mysql. see Data::Model::Driver::DBI::MasterSlave. Cache Cash of the result of a query. see Data::Model::Driver::Cache::HASH, see Data::Model::Driver::Cache::Memcached. Memcached memcached is used for data storage. see Data::Model::Driver::Memcached. Queue::Q4M queuing manager for Q4M. see Data::Model::Driver::Queue::Q4M. Memory on memory storage. see Data::Model::Driver::Memory. SEE ALSO Data::Model::Row, Data::Model::Iterator ACKNOWLEDGEMENTS Benjamin Trott more idea given by Data::ObjectDriver AUTHOR Kazuhiro Osawa shibuya pl> REPOSITORY git clone git://github.com/yappo/p5-Data-Model.git Data::Model's Git repository is hosted at . patches and collaborators are welcome. LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.