Jika Anda akan memotivasi para "pro" mengapa Anda menggunakan ORM untuk manajemen / klien, apa alasannya?
Coba dan pertahankan satu alasan per jawaban sehingga kami dapat melihat apa yang dipilih sebagai alasan terbaik
Jika Anda akan memotivasi para "pro" mengapa Anda menggunakan ORM untuk manajemen / klien, apa alasannya?
Coba dan pertahankan satu alasan per jawaban sehingga kami dapat melihat apa yang dipilih sebagai alasan terbaik
Jawaban:
Membuat akses data menjadi lebih abstrak dan portabel. Kelas implementasi ORM tahu cara menulis SQL khusus vendor, jadi Anda tidak perlu melakukannya.
Alasan terpenting untuk menggunakan ORM adalah agar Anda dapat memiliki model bisnis berorientasi objek yang kaya dan masih dapat menyimpan serta menulis kueri yang efektif dengan cepat pada database relasional. Dari sudut pandang saya, saya tidak melihat keuntungan nyata yang diberikan ORM yang baik kepada Anda bila dibandingkan dengan DAL yang dihasilkan lain selain jenis kueri lanjutan yang dapat Anda tulis.
Salah satu jenis kueri yang saya pikirkan adalah kueri polimorfik. Kueri ORM sederhana mungkin memilih semua bentuk di database Anda. Anda mendapatkan kembali koleksi bentuk. Tetapi setiap contoh adalah persegi, lingkaran atau persegi panjang menurut pembeda.
Jenis kueri lainnya adalah kueri yang dengan penuh semangat mengambil objek dan satu atau beberapa objek atau koleksi terkait dalam satu panggilan database. mis. Setiap objek bentuk dikembalikan dengan koleksi puncak dan sampingnya diisi.
Saya minta maaf untuk tidak setuju dengan begitu banyak orang lain di sini, tetapi saya tidak berpikir bahwa pembuatan kode adalah alasan yang cukup baik dengan sendirinya untuk menggunakan ORM. Anda dapat menulis atau menemukan banyak template DAL yang bagus untuk generator kode yang tidak memiliki overhead konseptual atau kinerja seperti yang dilakukan ORM.
Atau, jika Anda berpikir bahwa Anda tidak perlu tahu cara menulis SQL yang baik untuk menggunakan ORM, sekali lagi, saya tidak setuju. Mungkin benar bahwa dari perspektif menulis kueri tunggal, mengandalkan ORM lebih mudah. Namun, dengan ORM, terlalu mudah untuk membuat rutinitas berkinerja buruk ketika pengembang tidak memahami bagaimana kueri mereka bekerja dengan ORM dan SQL yang mereka terjemahkan.
Memiliki lapisan data yang berfungsi pada beberapa database dapat bermanfaat. Itu bukan salah satu yang harus saya andalkan sesering itu.
Pada akhirnya, saya harus mengulangi bahwa menurut pengalaman saya, jika Anda tidak menggunakan fitur kueri yang lebih canggih dari ORM Anda, ada opsi lain yang menyelesaikan masalah yang tersisa dengan pembelajaran yang lebih sedikit dan siklus CPU yang lebih sedikit.
Oh ya, beberapa developer merasa bekerja dengan ORM itu menyenangkan, jadi ORM juga bagus dari perspektif keep-your-developer-happy. =)
Mempercepat perkembangan. Misalnya, menghilangkan kode berulang seperti memetakan kolom hasil kueri ke anggota objek dan sebaliknya.
Mendukung enkapsulasi OO aturan bisnis di lapisan akses data Anda. Anda bisa menulis (dan men-debug) aturan bisnis dalam bahasa preferensi aplikasi Anda, alih-alih bahasa pemicu kikuk dan prosedur tersimpan.
Menghasilkan kode boilerplate untuk operasi CRUD dasar. Beberapa kerangka kerja ORM dapat memeriksa metadata database secara langsung, membaca file pemetaan metadata, atau menggunakan properti kelas deklaratif.
Anda dapat berpindah ke perangkat lunak database yang berbeda dengan mudah karena Anda sedang mengembangkan ke abstraksi.
Kebahagiaan pengembangan, IMO. ORM mengabstraksi banyak hal yang tidak berhubungan dengan logam yang harus Anda lakukan di SQL. Itu membuat basis kode Anda tetap sederhana: lebih sedikit file sumber untuk dikelola dan perubahan skema tidak memerlukan waktu pemeliharaan berjam-jam.
Saat ini saya menggunakan ORM dan itu telah mempercepat perkembangan saya.
Untuk meminimalkan duplikasi kueri SQL sederhana.
Alasan saya memeriksanya adalah untuk menghindari kode yang dihasilkan dari alat DAL VS2005 (pemetaan skema, TableAdapters).
DAL / BLL yang saya buat lebih dari setahun yang lalu berfungsi dengan baik (untuk tujuan saya membuatnya) sampai orang lain mulai menggunakannya untuk memanfaatkan beberapa fungsi yang dihasilkan (yang saya tidak tahu ada di sana)
Sepertinya ini akan memberikan solusi yang jauh lebih intuitif dan lebih bersih daripada solusi DAL / BLL dari http://wwww.asp.net
Saya berpikir untuk membuat pembuat kode SQL Command C # DAL saya sendiri, tetapi ORM terlihat seperti solusi yang lebih elegan
Kompilasi dan pengujian kueri.
Saat perkakas untuk ORM semakin baik, lebih mudah untuk menentukan kebenaran kueri Anda lebih cepat melalui kesalahan waktu kompilasi dan tes.
Mengompilasi kueri Anda membantu membantu pengembang menemukan kesalahan lebih cepat. Baik? Baik. Kompilasi ini dimungkinkan karena pengembang sekarang menulis kueri dalam kode menggunakan objek atau model bisnis mereka alih-alih hanya string pernyataan seperti SQL atau SQL.
Jika menggunakan pola akses data yang benar di .NET, mudah untuk menguji logika kueri Anda terhadap koleksi memori. Ini mempercepat eksekusi pengujian Anda karena Anda tidak perlu mengakses database, menyiapkan data dalam database, atau bahkan memutar konteks data lengkap. [EDIT] Ini tidak benar seperti yang saya kira sebagai unit pengujian dalam memori dapat menghadirkan tantangan yang sulit untuk diatasi. Tapi saya masih merasa tes integrasi ini lebih mudah untuk ditulis dibandingkan tahun-tahun sebelumnya. [/ EDIT]
Ini jelas lebih relevan hari ini daripada beberapa tahun yang lalu ketika pertanyaan itu diajukan, tetapi itu mungkin hanya kasus Visual Studio dan Entity Framework di mana pengalaman saya berada. Plugin lingkungan Anda sendiri jika memungkinkan.
Saya pikir ada banyak poin bagus di sini (portabilitas, kemudahan pengembangan / pemeliharaan, fokus pada pemodelan bisnis OO dll), tetapi ketika mencoba meyakinkan klien atau manajemen Anda, semuanya bermuara pada berapa banyak uang yang akan Anda hemat dengan menggunakan sebuah ORM .
Lakukan beberapa perkiraan untuk tugas-tugas tipikal (atau bahkan proyek yang lebih besar yang mungkin akan datang) dan Anda akan (mudah-mudahan!) Mendapatkan beberapa argumen untuk peralihan yang sulit untuk diabaikan.
Tingkat .net menggunakan template code smith
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
Mengapa membuat kode sesuatu yang bisa dibuat dengan baik juga.
Saya pikir satu kekurangannya adalah ORM memerlukan beberapa pembaruan di POJO Anda. terutama terkait dengan skema, relasi, dan kueri. jadi skenario di mana Anda tidak seharusnya membuat perubahan pada objek model, mungkin karena itu dibagi di antara lebih banyak proyek atau klien dan server b / w. jadi dalam kasus seperti itu, Anda perlu membaginya menjadi dua tingkat, yang akan membutuhkan upaya tambahan.
Saya adalah pengembang Android dan seperti yang Anda ketahui, aplikasi seluler biasanya berukuran tidak besar, jadi upaya tambahan untuk memisahkan model murni dan model yang terpengaruh orm ini tampaknya tidak sepenuhnya bermanfaat.
Saya mengerti bahwa pertanyaan itu adalah pertanyaan umum. tetapi aplikasi seluler juga ada di dalam payung umum.