DB ActiveRecord / DataMapper

[DataMapper]
data(attributes) ← mapper(insert/update/delete) → DB

オブジェクトとリレーショナルデータベースは、 異なるメカニズムでデータを構成している。 オブジェクトの多くの部分(コレクションや継承など)は、 リレーショナルデータベースでは表すことができない。 多くのビジネスロジックを伴ったオブジェクトモデルを構築する場合、 データおよびデータに付随する振る舞いをうまくまとめるために、 このメカニズムを使うことは非常に大切である。 これによりスキーマが異なったままとなる。 つまり、オブジェクトスキーマとリレーショナルスキーマはマッチしないのである。
他にも、2つのスキーマ間でデータを転送しなければならない。 このデータ転送は、それ自体が複雑な代物である。 メモリ内のオブジェクトがリレーショナルデータベース構造を知っている場合、 どこかひとつを変更すると、他のところにも波及してしまう。
DataMapperは、メモリ内のオブジェクトをデータベースから分離するためのソフトウェアレイヤである。 その責任は両者間でデータを受け渡しすること、そして、両者を分離することである。 DataMapperを使うと、メモリ内のオブジェクトはどこにデータベースがあるのかすら知る必要がない。SQLインターフェースコードも必要なく、データベーススキーマも知らないだろう。(データベーススキーマは、自分を使用しているオブジェクトのことを常に知らない。) Mapper の一種であるため、ドメインレイヤはDataMapperのことを知らない。

http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?DataMapper

[ActiveRecord]
data(attributes・insert/update/delete) → DB

データと振る舞いの両方を持つオブジェクト。データの多くは永続的であり、データベースに格納される必要がある。ActiveRecordは、メインオブジェクトにデータアクセス処理を置くという最も明らかなアプローチを採用している。この方法では、全員がデータベースへの読み書きするやり方を知っている。

http://capsctrl.que.jp/kdmsnr/wiki/PofEAA/?ActiveRecord

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です