NAME

Storm - Object-relational mapping

TUTORIAL

If you're new to Storm check out Storm::Manual::Intro.

SYNOPSIS

package Foo;

use Storm::Builder;

__PACKAGE__->meta->table('Foo');

has 'id' => ( is => 'rw', traits => [qw( PrimaryKey AutoIncrement )] );

has 'label' => ( is => 'rw' );



# and then ....

package main;

use Storm;

# connect to a database
$storm = Storm->new( source => ['DBI:SQLite:dbname=:memory:'] );

$o = Foo->new( label => 'Storm Enabled Object' );

# store object
$storm->insert( $o );

# update object
$o->label( 'Updated Object' );
$storm->update( $o );

# sync object with database
$storm->refresh( $o );

# lookup object in database
$o = $storm->lookup( 'Foo', 1 );

# search for objects in database
$query = $storm->select( 'Foo' );
$query->where( '.label', '=', 'Updated Object' )
$iter  = $query->results;
@results = $iter->all;

# delete objects
$storm->delete( $o );

DESCRIPTION

Storm is a Moose based library for storing and retrieving objects from a DBI connection.

ATTRIBUTES

aeolus

Read-only.

A Storm::Aeolus object for installing/uninstalling database tables.

live_objects

Read-only.

A Storm::LiveObjects object for tracking the set of live objects. Creates scope objects to help ensure that objects are not garbage collected. This is used internally and you typically shouldn't need to access it yourself. It is documented here for completeness.

policy

The policy determines how types are defined in the database and can be used to customize how types are inflated/deflated. See Storm::Policy for more details.

source

Required.

The Storm::Source object responsible for spawning active database handles. A Storm::Source object will be coerced from a ArrayRef or Hashref.

METHODS

delete @objects

Deletes the objects from the database.

delete_query $class

Returns a Storm::Query::Delete instance for deleting objects of type $class from the database.

do_transaction \&func

Creates and commits a Storm::Transaction. The \&func will be called within the transaction.

insert @objects

Insert objects into the database.

insert_query $class

Returns a Storm::Query::Insert instance for inserting objects of type $class into the database.

lookup $class, @ids

Retrieve objects from the database.

lookup_query $class

Returns a Storm::Query::Lookup instance for retrieving objects of type $class from the database.

new_transaction \&func

Returns a new transaction. \&func is the code to be called within the transaction.

refresh @objects

Update the @objects with data from the database.

refresh_query $class

Returns a Storm::Query::Refresh instance for refresh objects of type $class.

select $class, @objects

Synonamous with select_query. Provided for consistency.

select_query $class

Returns a Storm::Query::Select instance for selecting objects from the database.

update @objects

Update the @objects in the database.

update_query

Returns a Storm::Query::Select instance for updating objects in the database.

SEE ALSO

Similar modules

KiokuDB
Fey::ORM
Pixie
DBM::Deep
OOPS
Tangram
DBIx::Class
MooseX::Storage

AUTHOR

Jeffrey Ray Hallock <jeffrey.hallock at gmail dot com>

COPYRIGHT

Copyright (c) 2010 Jeffrey Ray Hallock. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.