5. O/R マッピング手法自体の分類 一口に「 O/R マッピング FW 」といっても、実はいろいろな手法を使ったものが存在する 永続化ロジックそのものの配置場所による違い Active Record パターン Data Mapper パターン 動的マッピング機能に対するサポート有無の違い Identity Mapping パターン Unit Of Work パターン 以上のパターンは、すべてマーチンファウラーのエンタープライズアーキテクチャパターンで説明されている http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?CatalogOfPofEAAInJapanese
6. Active Record パターン 永続化処理をエンティティに持たせることで、エンティティが自分自身で「アクティブに」 DB にアクセスする 古い CMP エンティティ EJB における O/R マップの手法 一見 OO 的でわかりやすいが、ドメインロジックを DB と切り離して単体試験できないなど最近の Java の世界では、むしろ、アンチパターンとされている Ruby の世界では動的言語の特性を活かすことで Active Record のアプローチが見直されている エンティティが自分で DB に対して永続ロジックを実行する
7. Data Mapper パターン エンティティと DB とのデータの変換を担当する専用の「マッパーオブジェクト」を利用する エンティティ自身にはドメインロジックのみが記述され、 DB からは完全に切り離される XML ファイルやアノテーションなどにマッピングのためのメタデータを記述することで、マッパーオブジェクト自身は汎用の FW を再利用することができる JPA をはじめ、最近の Java の O/R マッピングでは、流行のアプローチ