理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

PoEAA: Dependent Mapping

(CD とかの)「トラック」のデータが「アルバム」という親の概念のエンティティのロード/保存に合わせてロード/保存され、一方でそれ以外のエンティティからは参照されないようなケースがあります。 このように、他のエンティティからは独立した親子関係が成立しているとき、親である「アルバム」のレコードを Object に変換する Mapper が、子である「トラック」のレコードも Object に変換すると、DB -> Object のマッピングはシンプルになります。 このようなパターンが Dependent Mapping です。

Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler))

Patterns of Enterprise Application Architecture (Addison-Wesley Signature Series (Fowler))

Dependent Mapping では、DB において、子エンティティのパーシステンスは親エンティティのパーシステンスに依存するという構造になります。子は完全に親に依存するため、通常、子エンティティのみを抽出する、といった機能は行われません。 また、子エンティティは親エンティティからしか参照されませんので、特定「アルバム」に対して子である「トラック」の情報が書き変わったとき、その「トラック」の情報更新は単純な delete & insert で代替可能になります。