[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