私は、特にデータ アクセス層 (DAL) とビジネス ロジック層 (BLL) を含む n 層アプリケーションを持っています。オブジェクトを埋めるために使用する DAL で、SQL クエリとストアド プロシージャを使用します。
だからここに私の質問があります:
SQL クエリのORDER BY
句は、関心の分離に違反していますか?
一方では、特定の順序でデータを表示する理由を決定するのはビジネス ルールであるため、並べ替えロジックはビジネス レイヤーに属しているように見えます。また、同じデータを複数の方法で表示したい場合もあります。さらに、データ アクセス コードは、表示方法などの懸念事項を認識していないはずがありません。
一方、データベースは一般に、アプリケーション コードよりもデータの並べ替えの効率が高いため、パフォーマンス上の理由から、BLL での並べ替えよりも ORDER BY 句を使用するインセンティブがあります。さらに、DAL で既定の並べ替え順序を指定することが、関心の分離に本当に違反するかどうかはわかりません。レコードは、何らかの方法でデータベースから取得する必要があります。最も一般的なシナリオに従ってそれらを並べ替えてみませんか? 既定とは異なる並べ替え順序が必要な場合は、BLL の何らかの方法で並べ替えることができます。