NAME
Class::DBI::Storable - Mixin Storable hooks to freeze and thaw objects
VERSION
Version 0.01
SYNOPSIS
package My::Class;
use base 'Class::DBI';
use Class::DBI::Storable;
# or use base qw(Class::DBI Class::DBI::Storable);
package main;
use Storable qw(freeze thaw dclone);
my $obj = My::Class->retrieve($id);
dclone($obj); # Produces a warning
DESCRIPTION
Class::DBI attempts to maintain the the uniqueness of objects in memory.
Serializers such as Storable will generally violate this constraint when
an object is frozen and thawed.
This mixin module makes your Class::DBI objects serializable with
Storable. Only the primary keys are serialized and the objects is thawed
using "retrieve" on the appropriate CDBI class.
The Storable hooks carp if there are unsaved changes to the object being
frozen or if you attempt to dclone a object. Using dclone on a CDBI
object doesn't really make sense.
STORABLE_freeze and STORABLE_attach the only methods. They will be
called automatically by Storable.
Are You Sure This Is A Good Idea?
No.
This module exists to try to make Class::DBI and Storable work together
acceptably. It's existence is not to be construed as a recommendation of
the practice.
DIAGNOSTICS
Storable::dclone($cdbi_object) will emit:
"Warning, cloning a Class::DBI object of class <class name>"
This is to help catch inadvertent uses of dclone and to discourage it's
use. (The warning can be suppressed with the $CloneCarp package
variable)
If Storable::freeze is called of an object with unsaved changes then:
"Warning, freezing <class name> discards unsaved changes"
(Suppress with the package variable $FreezeCarp)
DEPENDENCIES
Storable 2.14 or newer
BUGS AND LIMITATIONS
There are no known bugs in this module.
Please report problems to the author directly or via RT
SEE ALSO
Class::DBI in particular "Uniqueness of Objects in Memory", Storable
AUTHOR
Brad Bowman <cpan@bereft.net>
LICENCE AND COPYRIGHT
Copyright (c) 2005 Brad Bowman <cpan@bereft.net>. All rights reserved.
This module is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.