Class::DBI::Cacheable transparently acts as a cacheing wrapper around Class::DBI, storing retrieved and created data in a local object cache, and returning data out of the cache wherever possible.
これはなかなかグレイトなクラス。Class::DBI::Cacheable は Class::DBI のラッパクラスとして動作、Class::DBI により生成したオブジェクトをローカルにキャッシュしてパフォーマンスを向上させることができます。
実際のオブジェクトキャッシュは Class::DBI::Cacheable ディストリビューションに含まれる Class::DBI::ObjectCache が担当、その中のインプリには Cache::Cache をインタフェースとして用いています。Class::DBI::ObjectCache をそのまま使うとファイルベースのキャッシュである Cache::FileCache を使いますが、CACHE() メソッドをオーバーライドしたサブクラスを用意することで、Cache::Cache インタフェースの他の実装クラス、共有メモリでのキャッシュや DB でのキャッシュを利用することも可能とのこと。
はてなフレームワークでも Class::DBI と同じような、独自の仕組みでデータベースをオブジェクトにより抽象化してますが、その中にキャッシングの仕組みを導入するにあたっての設計・実装の参考になりそう。メモメモ。