Zitat von Perrin Harkins <[EMAIL PROTECTED]>:
> You need to separate managing your database connections from caching
> this data. They are not related, and there's no reason to do both in
> one class. Either just call connect_cached all the time (it uses
> Apache::DBI when it finds it loaded), or make your own database
> connection singleton that decides how to connect in the current
> environment. Keep your data in the object as you planned.
Ok, got that! But how does the class get its database handle to operate on?
I have already put the database connection stuff into a separate class
(let's call it My::Database). My::Database has a constructor
which connects to the database, stores the handle in $self->{_dbh} and a
method "dbh" which returns this handle. Now My::Structure does the following:
sub new {
... $self->{_dbh} = My::Database->new()->dbh(); ...
}
sub init {
... prepare data using $self->{_dbh} and store it ...
}
sub query_something_during_request {
... again using $self->{_dbh} ...
# this is where a "stale", non-cached database handle will get used, right?
}
One solution that just popped into my mind is changing My::Database's "dbh"
method so that it always connects using connect_cached instead of doing it
once during creation of My::Database. Would that be a feasible solution?
Again thanx a lot!
Toby