[CDBI] has_many caching

Daniel Williams danielw at staff.iinet.net.au
Sun Apr 16 03:56:19 BST 2006


It's done multiple times inside of a template toolkit template. There is
definitely ways around it, but this makes the most sense for convenience
and functionality.





From: .--- .- -- . ... [mailto:yoorobot at gmail.com] 
Sent: Sunday, 16 April 2006 6:55 AM
To: Daniel Williams
Cc: classdbi at lists.digitalcraftsmen.net
Subject: Re: [CDBI] has_many caching


you mean you are making calls to $obj->entries in succession to retrieve
the same set of data?  If so, why don't you just copy the returned array
instead of making a duplicate request?

- james

On 4/13/06, Daniel Williams <danielw at staff.iinet.net.au> wrote:


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 ?


ClassDBI mailing list
ClassDBI at lists.digitalcraftsmen.net

.--- .- -- . ... -.-- --- --- 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digitalcraftsmen.net/mailman/private/classdbi/attachments/20060416/503ff58c/attachment.htm

More information about the ClassDBI mailing list