Alzabo::Runtime::UniqueRowCache(3) Implements a row cache for Alzabo

SYNOPSIS


use Alzabo::Runtime::UniqueRowCache;
Alzabo::Runtime::UniqueRowCache->clear();

DESCRIPTION

This is a very simple caching mechanism for "Alzabo::Runtime::Row" objects that tries to ensure that for there is never more than one row object in memory for a given database row.

To use it, simply load it.

It can be foiled through the use of "Storable" or other ``deep magic'' cloning code, like in the "Clone" module.

The cache is a simple hash kept in memory. If you use this module, you are responsible for clearing the cache as needed. The only time it is cleared automatically is when a table update or delete is performed, in which case all cached rows for that table are cleared.

In a persistent environment like mod_perl, you should clear the cache on a regular basis in order to prevent the cache from getting out of sync with the database. A good way to do this is to clear it at the start of every request.

METHODS

All methods provided are class methods.
  • clear

    This clears the entire cache

  • clear_table( $table_object )

    Given a table object, this method clears all the cached rows from that table.

  • row_in_cache( $table_name, $row_id )

    Given a table name and a row id, as returned by the "Alzabo::Runtime::Row->id_as_string" method, this method returns the matching row from the cache, if it exists. Otherwise it returns undef.

  • delete_from_cache( $table_name, $row_id )

    Given a table name and a row id, as returned by the "Alzabo::Runtime::Row->id_as_string" method, this method returns the matching row from the cache.

  • write_to_cache( $row_object )

    Given a row object, this method stores it in the cache.

AVOIDING THE CACHE

If you want to not cache a row, then you can pass the ``no_cache'' parameter to any table or schema method that creates a new row object or a cursor, such as "Alzabo::Runtime::Table->insert()", "Alzabo::Runtime::Table->rows_where()".

AUTHOR

Dave Rolsky, <[email protected]>