ActiveRecordからDataMapperパターンにリファクタリングしましたか? 切り替えのきっかけは?私は主に Web ベースのアプリケーションに興味がありますが、どのような環境でもそのような動きに伴う課題を知りたいと思っています。
3 に答える
私は ActiveRecord パターンのシンプルさがとても気に入っています。しかし、私はより大きな Web アプリのためにそれから離れてきました。ActiveRecord ベースのプロジェクトが複雑になるにつれて、ActiveRecord オブジェクトが大きくなり、コードが多すぎることがわかりました。
リポジトリ パターン (本質的にはデータ マッパー) を導入することで、ドメイン モデル クラスがよりシンプルになり、データ マッピング/データ アクセス ロジックが分離されます。
また、静的メソッドを使用しているため、ActiveRecord オブジェクトをモックすることは非常に困難 (不可能?) です。
テーブル データ ゲートウェイと行データ ゲートウェイを使いやすい組み込みクラスとして提供するフレームワークを使用します。指定する必要があるのは、主キー (単に 'id' ではない場合) とテーブルの名前 (そうでない場合) だけだからです。クラス名と同じ)。しかし、リファクタリングの過程で、ドメインとデータベースの間でより複雑なマッピングが発生しなければならない瞬間に、これらのパターンが劣化し始めることを最近発見しました。
たとえば、私は現在、単一テーブルの継承 (継承マッピングを使用) を使用できるように、Data Mapper を使用するように 1 つの Web サイトのコードをリファクタリングしています。基本的に、データベースとドメインの関係が 1 対 1 よりも複雑になるときはいつでも、Data Mappers の使用を強く検討します。
campを使用して PDE-Build の上にある統合ビルド システムを作成しました。最初は ActiveRecord を使用していましたが、データベースへのノンブロッキング スレッドセーフ アクセスが必要だったため、Data Mapper の使用に切り替えました。
バグによる悲しみはかなりありましたが、最新バージョンはかなり安定しているようです。