1 package DBIx::Class::Serialize::Storable;
7 my ($self, $cloning) = @_;
8 my $to_serialize = { %$self };
10 # The source is either derived from _source_handle or is
11 # reattached in the thaw handler below
12 delete $to_serialize->{result_source};
14 # Dynamic values, easy to recalculate
15 delete $to_serialize->{$_} for qw/related_resultsets _inflated_column/;
17 return (Storable::freeze($to_serialize));
21 my ($self, $cloning, $serialized) = @_;
23 %$self = %{ Storable::thaw($serialized) };
25 # if the handle went missing somehow, reattach
26 $self->result_source($self->result_source_instance)
27 if !$self->_source_handle && $self->can('result_source_instance');
36 DBIx::Class::Serialize::Storable - hooks for Storable freeze/thaw
40 # in a table class definition
41 __PACKAGE__->load_components(qw/Serialize::Storable/);
43 # meanwhile, in a nearby piece of code
44 my $cd = $schema->resultset('CD')->find(12);
45 # if the cache uses Storable, this will work automatically
46 $cache->set($cd->ID, $cd);
50 This component adds hooks for Storable so that row objects can be
51 serialized. It assumes that your row object class (C<result_class>) is
52 the same as your table class, which is the normal situation.
56 The following hooks are defined for L<Storable> - see the
57 documentation for L<Storable/Hooks> for detailed information on these
60 =head2 STORABLE_freeze
62 The serializing hook, called on the object during serialization. It
63 can be inherited, or defined in the class itself, like any other
68 The deserializing hook called on the object during deserialization.
72 David Kamholz <dkamholz@cpan.org>
76 You may distribute this code under the same terms as Perl itself.