2011-07-10 14 views
17

データアクセスオブジェクトとアクティブレコードの違いは何ですか?アプリケーションと永続化レイヤーの間にレイヤーを構築し、SQLクエリーを使用して直接的なデータベースへのアクセスを抽象化することで、まったく同じように見えます。アクティブレコードとDAOの違いは?

答えて

17

データアクセスオブジェクト(DAO)は、データレイヤー内の、ドメイン内に別のエンティティを保持する役割を果たすオブジェクトを指します。アクティブレコードは、テーブルの単一の行の値を含むクラスも、そのテーブルへのクエリ、更新、挿入、および削除を担当するハイブリッドです。アクティブレコードデザインパターンは、オブジェクトがデータベース内のテーブルと1対1のマッピングを持つことを意味します。

18

データアクセスオブジェクト(DAO)は、データレイヤー内のオブジェクトだけでなく、データソースへのモデル/ドメインオブジェクトの永続化専用のインターフェイスです。ここにはreferenceがあります。

ActiveRecordパターンは同様の方法で動作しますが、モデルオブジェクト自体にパーシスタンスメソッドを置きますが、DAOでは個別インターフェイスが定義されています。 DAOパターンの利点は次のとおりです。

  • 例えば、基礎となるimpelementationを変更せずに、クラウドへのデータベースから移動し、持続性の別のスタイルを定義するために、その簡単に、外部インタフェースは、したがって、他に影響を与えない、同じままクラス。

  • 永続性の懸念は、メインモデルのオブジェクトの懸念から離れてモジュール化されています。

ActiveRecordパターンの利点は単純です。

+0

私はあなたの最初の弾丸が不正確だと思います。おそらく、いくつかの実装では、しかし他のものでは、永続化メカニズム(実行時でさえ)をreldb、フラットファイル、またはWebサービスをインタフェースを変更することなく完全に変更することができます...特にそのインタフェースがうまく設計されていれば、更新、削除)。違いは(やはり、実装によっては...これらの特性が多くの言語に混在する可能性があるからです...) – Mainguy

+0

@Mainguy DAOの目標が達成できる、簡単でダイナミックな(静的ではない)すでにActiveRecordによって –

関連する問題