9

一見すると ActiveRecord ORM パターンを使用しているように見えたDataMapperを見ていました。DataMapper や Domain Object パターンを使用していると言う人もいます。

それらのパターンの違いは何ですか?

4

2 に答える 2

21

2 つのパターンの主な違いは次のとおりです。

  • ActiveRecord には、すべてのビジネス ロジックとデータベースへの自身の保存/更新方法の両方を認識している 1 つのドメイン オブジェクト、user.getLinkToProfile() および User::find(1)、User::save(user) があります。

  • DataMapper パターンでは、すべてのビジネス ロジックを保持するドメイン オブジェクトが 1 つあります。 UserMapper::find(1)、UserMapper.save(user)を持つデータベースからのユーザーオブジェクトの保存、更新、選択など

DataMapper は ActiveRecord より複雑になる可能性がありますが、ActiveRecord よりもドメイン モデルとデータベースを非同期で開発する方がはるかに簡単です。

于 2008-09-18T16:17:07.567 に答える
2

アクティブレコードは非常に重く、データマッパーとドメインオブジェクトがこれらの懸念を分離しているため、「ドメイン」または「エンティティ」オブジェクトに対してさまざまな側面を実行する、より定義されたコードのセットがあります。

個人的には、ドメインオブジェクト、データマッパーへの分離を使用して、データベースとアプリケーションの上位層の間でデータに何が起こるかを明確に分離するために、アセンブリパターン、さらにはデータ転送パターンを使用することをお勧めします。 。

...エレガントでシンプルな分離は常に役立ちます。

于 2008-09-18T16:20:41.863 に答える