1

SQL Alchemyを使用してデータアクセスレイヤーを抽象化し、その抽象化レイヤーからオブジェクトにアクセスする方法としてコントローラーを使用する場合、結合はどのように処理する必要がありますか?

たとえば、getOrder、saveOrderなどのメソッドを提供するようにOrderオブジェクトを管理するOrdersコントローラークラスと、同様にUserオブジェクト用の同様のコントローラーがあるとします。

まず第一に、これらのコントローラーも必要ですか?代わりに、SQLAlchemyをデータアクセスを処理するための「もの」として扱う必要があります。代わりに、SQLを直接記述しなくてもオブジェクトを取得して永続化するためのクリーンな宣言型の方法があるのに、オブジェクト指向のコントローラーに煩わされるのはなぜですか。

理由の1つは、SQLAlchemyを直接SQLやStormなどに置き換えたい場合があることです。したがって、中間層として機能するコントローラークラスをそこに配置すると、変更が必要なものを制限するのに役立ちます。

とにかく-メインの質問に戻ります-したがって、これら2つのコントローラーがあると仮定して、特定の基準を満たす特定のユーザーセットの注文のリストが必要だとします。これをどうやってやるの?一般に、コントローラーがドメインを横断することは望ましくありません。OrdersコントローラーはOrdersについてのみ認識し、UserコントローラーはUsersについてのみ認識します。これらは互いに混乱しません。また、一致するすべてのユーザーをフェッチしてから、ユーザーIDの大きなリストをOrdersコントローラーにフィードして、一致するOrdersを検索する必要もありません。

必要なのは参加です。これが私が立ち往生しているところです-これは、コントローラーがドメインを横断する必要があるか、おそらくそれらを完全に排除する必要があり、SQL Alchemyを介して直接結合し、必要に応じて結果のUserオブジェクトやOrderオブジェクトを取得する必要があることを意味しているようです。考え?

4

1 に答える 1

2

コントローラーは、利便性のために機能をカプセル化することを目的としています。手を縛らないこと。参加したい場合は、参加するだけです。クエリを作成するには、論理的に最も適していると思われるコントローラーを使用してください。

于 2010-05-29T06:35:07.047 に答える