シリアライズドLOB
原文: https://www.martinfowler.com/eaaCatalog/serializedLOB.html
オブジェクト同士の関係をシリアライズして、データベースに格納可能なひとつのラージオブジェクト(LOB)にする
解説の全文は『PofEAA』 272 ページを参照。
オブジェクトモデルは小さなオブジェクトの複雑な集まりになることが多い。この構造のもつ情報のほとんどは、オブジェクト内のデータではなく、これらオブジェクト間のリンクによって表される。例えばすべての顧客の組織階層を格納することを考えると、オブジェクトモデルの場合はコンポジションパターンを用いて自然に組織階層をあらわすことができ、子や兄弟、親を取得するためのメソッドを容易に付け加えることができる。
これを関係スキーマであらわすのは容易なことではない。基本スキーマそのものは簡単で、親への外部参照を持つテーブルだけである。しかし、このスキーマに対する操作は多くの JOIN が必要になり、遅くなって手に負えない。
オブジェクトは必ずしもテーブルの列に格納される必要はない。シリアライズして格納する方法もある。オブジェクト同士の関係(オブジェクトグラフ)の全てをひとつのラージオブジェクト(LOB)として書き出し、テーブルに格納する。このシリアライズされたLOBは、Memento[Gang of Four]の形をとる。