Saya akan mulai dengan mengatakan bahwa saya telah melakukan 95% pekerjaan basis data saya menggunakan SQL. Baru-baru ini, saya melakukan beberapa investigasi terhadap berbagai ORM, seperti NHibernate dan Doctrine.
Saya bisa melihat keuntungan dari tidak perlu tahu banyak SQL dan portabilitas database yang disediakan ORM. Tapi saya juga bisa melihat bahwa mengetahui SQL akan membuat bekerja dengan ORM lebih efektif dan saya hanya bisa memikirkan satu kali dalam karir saya bahwa perubahan terbesar aplikasi adalah vendor database.
Karena saya sangat nyaman menulis SQL dan tampaknya tidak menyadari manfaat yang sering diajarkan dari menggunakan ORM, pertanyaan saya kepada pengguna ORM yang berat adalah ini:
Apa jenis proyek pengembangan Web yang paling diuntungkan dari menggunakan ORM?
Jawaban:
(Hampir) semua aplikasi mendapat manfaat dari ORM.
Pertama, saya tidak setuju dengan kelebihan yang Anda daftarkan untuk ORM .
Sebaliknya, manfaat nyata dari ORM adalah:
Saat Anda berkomentar, satu sisi ORM adalah hilangnya kinerja. Namun, ini biasanya dapat diimbangi dengan menghabiskan lebih banyak perangkat keras.
Biasanya, waktu programmer lebih mahal daripada perangkat kerasnya, jadi ORM secara umum merupakan pilihan yang baik alih-alih mengkode tangan SQL.
ORM adalah yang terbaik untuk aplikasi dengan banyak logika database CRUD yang cukup sederhana. ORM kurang efektif untuk :
Dalam pengalaman saya, situasi ini jarang terjadi. Karena itu jawabanku.
sumber
Saya nyaman menulis SQL juga. Saya juga jauh lebih nyaman tidak harus menulis SQL sama sekali, serta tidak khawatir tentang koneksi, pemutusan, pengumpulan, dll ke database.
Jadi .. saya akan menjawab negatif pertanyaan Anda. Satu-satunya proyek pengembangan web yang TIDAK mendapat manfaat dari ORM adalah yang tidak berbicara sama sekali dengan database. Yang saya percaya adalah minoritas (jika ada).
sumber
Berdasarkan pengalaman saya dengan ASP.NET WebForms saya akan mengusulkan bahwa proyek web menggunakan kerangka kerja web stateful paling menguntungkan dari menggunakan ORM.
Dengan kerangka stateful markup dihasilkan secara otomatis di belakang layar, berdasarkan hirarki kontrol server yang aktif. Sangat menggoda untuk membuat kontrol-kontrol itu dimuat dan mempertahankan statusnya secara otomatis ke database. Di sinilah ORM membantu.
Anda mengurutkan abstrak dari akhir pipeline (HTML output) dan secara alami mengundang untuk berurusan dengan permulaan (sumber data) dengan cara yang sama sehingga Anda hanya tetap berada dalam logika bisnis Anda dalam kode aplikasi.
Bukannya saya tidak mengatakan ini adalah cara yang baik untuk melakukan sesuatu. Itu hanya tempat ORM cocok secara alami.
sumber
Dalam aplikasi di mana Anda memiliki model objek yang besar dan sangat terhubung, ORM menyelamatkan Anda dari menulis gabungan yang sama berulang-ulang.
Manfaat lain adalah pemuatan malas, di mana Anda ingin api mengembalikan grafik objek di mana klien api hanya akan menggunakan subset dari grafik itu.
sumber
Saya yakin Anda mengacaukan ORM dengan DBAL .
Konsep yang Anda maksud adalah Database Abstraction Layer (DBAL) yang memungkinkan Anda untuk menulis "sql" portabel yang tidak tergantung pada sistem database yang mendasarinya.
ORM di sisi lain (yang (hampir?) Selalu dibangun di atas DBAL):
Object-relational mapping (ORM, O/RM, and O/R mapping) in computer software is a programming technique for converting data between incompatible type systems in object-oriented programming languages. This creates, in effect, a "virtual object database" that can be used from within the programming language.
(Wikipedia)Sederhananya, ORM memungkinkan Anda untuk mengkonversi data dari database datar menjadi representasi objek yang meningkat.
sumber
Proyek yang tidak mendapat manfaat dari ORM adalah:
sumber