Kekuatan ORM adalah memungkinkan Anda untuk memodelkan perilaku aplikasi menggunakan teknik berorientasi objek. Di dunia yang direkayasa dengan cermat, Anda memiliki satu lapisan aplikasi di mana bahasa bisnis dengan rapi memenuhi bahasa tim pengembangan. ORM adalah enabler dari itu, jika ORM digunakan secara masuk akal.
Kelemahannya adalah bahwa jumlah orang yang benar-benar benar-benar mendapatkan pemrograman berorientasi objek cukup kecil. Banyak orang menulis spaghetti dan bakso, dengan benda-benda yang sangat berpasangan yang memiliki sedikit perilaku sendiri dan perilaku yang sebenarnya berakhir di kelas "Layanan" dan "Manajer" 8000 yang mengerikan, dan kode itu sering kali berbelit-belit sehingga semua orang takut mengubahnya karena mereka tidak tahu apa efek sampingnya.
Selain itu, banyak orang tidak benar-benar mendapatkan model relasional. ORM tidak akan membantu mereka mendapatkannya, dan itu tidak akan membantu mereka dengan mencabut model relasional. Ini hanya memungkinkan Anda untuk fokus pada lapisan domain Anda sejak dini dan melakukannya tepat sebelum Anda mulai terlalu peduli tentang desain database. Jika diterapkan dengan baik, dengan bantuan alat migrasi skema yang masuk akal, dan ORM dapat membantu Anda mencegah bertambahnya utang kode.
Saya telah membangun aplikasi di mana ORM membuat kode aplikasi sederhana, dapat dibaca, dan dapat diuji, dan memiliki kinerja yang wajar. Saya juga memelihara aplikasi di mana polanya disalahgunakan dan kodenya berbelit-belit, tidak bisa dites, lambat, dan rapuh; ternyata ORM itu sendiri tidak ada hubungannya dengan hal ini, kecuali bahwa alih-alih menulis kode buruk yang memodelkan domain aplikasi dengan buruk, tim insinyur lama menulis kode buruk yang memodelkan domain aplikasi dengan buruk dan kode lapisan layanan buruk yang mengabaikan semua nilai yang ORM mereka bisa berikan kepada mereka.
ORM tidak akan membuat Anda lebih pintar, tetapi di tangan pengembang yang tepat, dapat menghasilkan kode yang lebih mudah dikelola dan berkualitas lebih tinggi.