(Neredeyse) tüm uygulamalar ORM'den yararlanır.
İlk olarak, ORM için listelediğiniz avantajları kabul etmiyorum .
- ORM kullanmak, mutlaka SQL bilmeniz gerekmediği anlamına gelmez. SQL bilgisi, ORM aracının gerçekte ne yaptığını anlamaya yardımcı olacaktır, bu da özellikle hata ayıklama sırasında faydalıdır. Dahası, SQL'in seçtiğiniz ORM yeteneğinin ötesinde karmaşık sorgular geliştirmesi gerekebilir.
- Ve dediğin gibi, taşınabilirlik gerçek hayatta nadiren bir endişe kaynağıdır.
Bunun yerine, ORM'nin gerçek faydaları :
- ORM, programcıya zaman kazandırır çünkü SQL'de tonlarca CRUD mantığı yazmayı azaltır
- birçok ORM, yazması ve hata ayıklaması zor olan karmaşık önbellek mantığı vb. içerir. Bu, zamandan tasarruf etmenin yanı sıra , uygulamanızın güvenilirliğini ve sürdürülebilirliğini de artırabilir (veya en azından aynı sonuçları elde etmenizi sağlayacak zamandan tasarruf etmenizi sağlar)
- en iyi ORM'lerde ürünü aktif olarak geliştiren, sürdüren ve destekleyen bir kullanıcı topluluğu vardır . Özel SQL çevresindeki topluluk, en iyi ihtimalle, çözmemiz gereken sorunlara biraz daha az odaklanmıştır.
Yorumda bulunduğunuz gibi, ORM'in bir tarafı performans kaybıdır. Ancak, bu genellikle daha fazla donanım harcanarak dengelenebilir.
Tipik olarak, programcı zamanı donanımdan daha pahalıdır, bu nedenle ORM, el kodlaması SQL yerine genellikle iyi bir seçenektir.
ORM, oldukça basit bir CRUD veritabanı mantığı olan uygulamalar için en iyisidir. ORM aşağıdakiler için daha az etkilidir :
- Çok az veritabanı erişimi gerektiren / çok az veritabanı gerektiren uygulamalar.
- Büyük ölçüde karmaşık sorgulara ve çok az basit CRUD mantığına bağımlı uygulamalar
- Performansın kritik olduğu, ancak daha hızlı donanım dağıtma olasılığının olmadığı durumlar
Deneyimlerime göre, bu durumlar nadirdir. Bu yüzden cevabım.