[CDBI] has_many caching

"Daniel Williams" <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.class-dbi
Message-ID <5B0731A8753509478386ED3D6513B2D153CB64@isp-per-exch01.win2k.iinet.net.au>
Hi,

New to the list and relatively new to class::dbi.

I have had a look around and can't seem to find any example of what I'm
trying to achieve.

I have an Event Table, and an Entry Table.

Event is a 1 to many relationship with Entry.

Therefore we use for event:
ChimeFault::Event->has_many(entries => 'ChimeFault::Entry', 'faultid');
And for entry:
ChimeFault::Entry->has_a(faultid => 'ChimeFault::Event');


Ok now I retrieve an entry.

my $entry = ChimeFault::Event->retrieve(1);

and then grab all its entries:
my @entries = $entry->entries;
my @secondset = $entry->entries;

The problem is that the Class::DBI executes the SQL to look up the
entries twice. 

I tried caching the returned data in the Event class, but the problem is
that we are using mod_perl. When I do this the garbage script gets all
caught up with the fact that there is event->entry->event->entry
reference and hence never reaching 0 reference count, which means the
data stays in memory and all sorts of bad things happen.

Any suggestions ?

Daniel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.