Для мене 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 як основну частину програмування, а не абстрагуйтесь заради абстракції.