Sebelum saya berbicara tentang pertanyaan, sedikit pengantar dulu; Saya suka ORM. Dan saya benci SQL. Saya suka ORM karena mereka menyembunyikan kekacauan yang tidak ramah pengguna seperti SQL, dan menyediakan cara terintegrasi yang baik dalam menangani database.
Namun saya harus mengakui bahwa SQL memiliki banyak manfaat, dengan yang lebih besar presisi. Saya bisa berargumen tentang kompleksitas query SQL, tanpa pengetahuan rinci tentang skema database yang mendasarinya, hanya dengan memeriksa query. Oleh karena itu, ketika saya menggunakan SQL, saya selalu waspada, dan saya selalu memiliki intuisi tentang ke mana kompleksitas komponen menuju.
Di sisi lain, ketika menggunakan ORM, saya sangat kewalahan dengan kemudahan integrasi database, sehingga saya benar-benar lupa bahkan ada database. Ini telah menipuku beberapa kali. Berkali-kali di masa lalu, saya telah memanggil metode ORM yang tampak tidak bersalah, yang di belakang layar memanggil basis data yang besar dan menakutkan, yang menghancurkan kinerja.
Itu sebabnya bagi saya, kebenaran ada di antara keduanya. Saya suka menggunakan ORM, dan saya akan terus melakukannya, tetapi saya harus lebih berhati-hati dan selalu mempelajari implikasi (pada level SQL) dari setiap panggilan metode ORM. Mengetahui implikasi lapisan abstraksi adalah emas murni dalam bisnis ini, dan membenarkan penggunaan abstraksi. Yang lainnya, seperti menembak diri sendiri.