Bagi saya, SQL adalah bagian mendasar (dalam banyak kasus, mayoritas) dari kode logika bisnis. Jika Anda mencoba untuk memisahkannya dari kode yang beroperasi pada data yang dikembalikan, Anda lebih cenderung tidak menyeimbangkan pengertian dan keteraturan kode.
Ketika saya melihatnya, membaca data, memproses data, menulis data, mencari data ... mereka semua adalah operasi yang sama, dan paling baik disimpan di tempat yang sama.
Jika Anda mulai merasakan duplikasi upaya dengan kueri, maka mungkin Anda memerlukan tampilan basis data atau objek yang dapat merangkum aspek akses basis data itu.
Tip lainnya adalah benar-benar memiliki metode kueri basis data yang baik. Dalam perangkat lunak yang saya tulis (PostgreSQL, MySQL, SQL Server), saya telah memastikan bahwa sebagian besar operasi permintaan saya dapat dilakukan sebagai pernyataan kode tunggal.
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])
Itulah (kira-kira) panggilan fungsi utama yang saya pastikan adalah bagian dari "objek koneksi" saya. Itu tergantung pada bahasa, apa yang sebenarnya Anda implementasikan, tetapi poin saya adalah menjaganya tetap benar-benar sederhana dan tidak menyakitkan.
Singkatnya, perlakukan SQL sebagai bagian asli pemrograman, dan jangan abstraksi demi abstraksi.