原文: http://www.martinfowler.com/eaaCatalog/identityMap.html

ロードしたオブジェクトをマップに保存して、オブジェクトが一度だけロードされることを保証する。オブジェクトが参照されたときは、マップを使って探し出す。

解説の全文は『PofEAA』 195 ページを参照。

古くから「時計を2つ持つ者は、決して時間が分からない」と言われる。 2つの時計が間違っていたら、データベースからオブジェクトをロードする際により大きな混乱に巻き込まれる可能性がある。 気を付けないと、同じデータベース レコードからデータをロードし、 異なる2つのオブジェクトに入れてしまうこともある。 2つのオブジェクトを更新した場合は、 変更点をデータベースに正しく書き出す際、注意しなければならない。

これに関係するのは、パフォーマンス問題である。 同一データを複数回ロードすると、リモート コールのコストが高くなっていく。 従って、同一データのロードを2度行わないことは、 データの正確性のみならず、アプリケーションのスピードアップにもつながる。

IdentityMapは、ビジネス トランザクション内でデータベースから読み込まれたすべてのオブジェクトのレコードを保持する。 オブジェクトが必要になったら、まずIdentityMapをチェックし、 すでに保持しているかどうか確かめる。


PofEAA index | パターンカタログの日本語版 | パターンカタログの英日対応表