私にとって、SQLはビジネスロジックコードの基本的な部分(多くの場合、大部分)です。返されたデータを操作するコードからそれを分離しようとすると、コードの理解性と保守性のバランスが崩れやすくなります。
私が見ると、データの読み取り、データの処理、データの書き込み、データの検索などはすべて同様の操作であり、同じ場所に保管するのが最適です。
クエリを使用した作業の重複を感じ始めたら、おそらくデータベースビューまたはデータベースアクセスのその側面をカプセル化できるオブジェクトが必要になります。
別のヒントは、実際に適切なデータベースクエリメソッドを使用することです。私が書いているソフトウェア(PostgreSQL、MySQL、SQL Server)では、クエリ操作の大部分が単一のコードステートメントとして実行されることを保証しています。
GetValue(SQL, [transaction], [array_of_params])
GetRow(SQL, [transaction], [array_of_params])
GetRowList(SQL, [transaction], [array_of_params])
GetValueList(SQL, [transaction], [array_of_params])
Execute(SQL, [transaction], [array_of_params])
これらは(大体)私の「接続オブジェクト」の一部であることを保証するメイン関数呼び出しです。それは言語、実際に実装するものに依存しますが、私のポイントはそれを本当に、本当にシンプルで、痛みのないものにすることです。
要約すると、 SQLをプログラミングのネイティブ部分として扱い、抽象化のために抽象化しないでください。