Selama magang saya, saya telah menggunakan NHibernate untuk beberapa proyek kecil yang sebagian besar saya kodekan dan rancang sendiri. Sekarang, sebelum memulai beberapa proyek yang lebih besar, muncul diskusi tentang bagaimana merancang akses data dan apakah akan menggunakan layer ORM atau tidak. Karena saya masih dalam masa magang dan masih menganggap diri saya sebagai pemula dalam pemrograman perusahaan, saya tidak benar-benar mencoba mendorong menurut pendapat saya, yaitu menggunakan mapper relasional objek ke database dapat memudahkan pengembangan cukup banyak. Pembuat kode lain dalam tim pengembangan jauh lebih berpengalaman daripada saya, jadi saya pikir saya hanya akan melakukan apa yang mereka katakan. :-)
Namun, saya tidak sepenuhnya memahami dua alasan utama untuk tidak menggunakan NHibernate atau proyek serupa:
- Seseorang dapat membuat objek akses datanya sendiri dengan kueri SQL dan menyalin kueri tersebut dari Microsoft SQL Server Management Studio.
- Men-debug ORM bisa jadi sulit.
Jadi, tentu saja saya bisa membangun lapisan akses data saya dengan banyak SELECT
dll, tetapi di sini saya kehilangan keuntungan dari gabungan otomatis, kelas proxy pemuatan lambat dan upaya pemeliharaan yang lebih rendah jika tabel mendapat kolom baru atau kolom mendapat berganti nama. (Memperbarui banyak SELECT
, INSERT
dan UPDATE
kueri vs. memperbarui konfigurasi pemetaan dan mungkin memfaktorkan ulang kelas bisnis dan DTO.)
Selain itu, dengan menggunakan NHibernate, Anda dapat mengalami masalah yang tidak terduga jika Anda tidak memahami framework dengan baik. Bisa jadi, misalnya, mempercayai Table.hbm.xml tempat Anda menyetel panjang string untuk divalidasi secara otomatis. Namun, saya juga dapat membayangkan bug serupa dalam lapisan akses data berbasis kueri SqlConnection "sederhana".
Akhirnya, apakah argumen yang disebutkan di atas benar-benar alasan yang baik untuk tidak menggunakan ORM untuk aplikasi perusahaan berbasis database yang tidak sepele? Apakah mungkin ada argumen lain yang mungkin mereka / saya lewatkan?
(Saya mungkin harus menambahkan bahwa menurut saya ini seperti aplikasi berbasis .NET / C # "besar" pertama yang akan membutuhkan kerja tim. Praktik yang baik, yang terlihat cukup normal di Stack Overflow, seperti pengujian unit atau integrasi berkelanjutan, tidak -ada di sini sampai sekarang.)