主に、好奇心から、ドメインロジックから永続性ロジックを分離するリポジトリパターンのPythonフレームワークまたは例を探しています。Pythonでのリポジトリパターンの実装?
ポスト "Untangle Domain and Persistence Logic with Curator"(Ruby)に名前が "Repository Pattern"という名前が表示され、アイデアは "Domain-Driven Design"ブックのsectionとMartin Fowlerから得られます。モデルクラスには永続ロジックが含まれておらず、インスタンスはモデルインスタンスのメモリ内コレクションのように動作するリポジトリサブクラスを宣言します。各リポジトリは、SQL(さまざまなスキーマ規則)、Riakやその他のnoSQL、メモリ(キャッシュ用)など、さまざまな方法でモデルを保持します。 SQLRepositoryの "WidgetRepository"サブクラスを宣言するだけで、モデルウィジェットを "widgets"という名前のDBテーブルに保存し、列をウィジェット属性に一致させるコレクションが提供されます。他のパターンから
違い:
のActive Recordパターン:例えば、DjangoのORM。アプリケーションは、ドメインロジックと永続性のためのメタデータを持つモデルクラスを定義します。 ORMは、パーシスタンスロジックをモデルクラスに追加します。これは、ドメインと永続性を1つのクラスに混在させます(ポストによれば望ましくない)。
@marcinのおかげで、Active Recordが多様なバックエンドと.save(= "other_database")関数をサポートすると、リポジトリパターンのマルチバックエンドの利点が得られることが分かります。
リポジトリパターンは、永続ロジックを別のクラスに移動したアクティブレコードと同じ意味です。
データマッパーパターン:たとえば、SQLAlchemyの古典的なマッピング。このアプリケーションは、データベーステーブルとモデルからテーブルへのデータマッパーの追加クラスを定義します。したがって、モデルインスタンスは、複数の方法でテーブルにマッピングすることができる。レガシースキーマをサポートします。 SQLAlchemyが非SQLストレージにマッパーを提供しているとは思わないでください。あなたはジェームズ・デニスのDictShield project
「DictShieldは、データベースに依存しないモデリング・システムである。それは、モデルの検証と簡単にデータを再構築する方法を提供します。すべての任意の特定のデータベースを必要とせずに良い顔をしているしたい場合があります
あなたの研究は何を示唆していますか?私はちょうど簡単にいくつかの選択肢を検索しました。 – Marcin
'' python ''リポジトリパターンのためのグーグリングは実装をまったくしません。あなたは何を正確に探しましたか? – Graham
http://www.google.co.uk/search?q=django+orm+backend – Marcin