7 poin oleh GN⁺ 2023-06-28 | 1 komentar | Bagikan ke WhatsApp
  • ORM (object-relational mapper) sering dikritik sebagai anti-pattern dalam pengembangan perangkat lunak.
  • Namun, kritik ini berlebihan, dan ORM, seperti alat perangkat lunak lainnya, pada dasarnya tidak buruk.
  • Masalah nyata ORM sering kali berasal dari penggunaan atau pemahaman yang keliru.
  • ORM dan basis data relasional bekerja dalam paradigma yang berbeda, sehingga dapat menimbulkan tantangan dalam pemodelan data dan relasi.
  • ORM melanggar prinsip tanggung jawab tunggal (SRP) dan pemisahan kepentingan (SOC), tetapi kritik ini sama sekali bukan masalah yang menentukan.
  • Masalah nyata ORM terletak pada efisiensi dan visibilitas.
  • Jika tidak digunakan dengan benar, ORM bisa tidak efisien, tetapi ORM juga memiliki fitur untuk mengoptimalkan kueri dan meningkatkan performa.
  • Masalah N+1, ketika ORM bolak-balik ke basis data berkali-kali, dapat dikurangi dengan menggunakan data loader.
  • Masalah terbesar ORM adalah visibilitas dan debugging. ORM mungkin tidak memberikan pesan kesalahan yang jelas atau membuat masalah sulit dipahami dan diselesaikan.
  • Jika digunakan dengan benar, ORM bisa seefisien SQL mentah, tetapi pengembang harus memanfaatkan fitur-fiturnya dan padanan SQL native-nya.
  • Untuk beberapa kueri yang kompleks atau bermasalah, mungkin perlu beralih ke kueri SQL mentah.
  • Secara keseluruhan, ORM pada dasarnya tidak buruk, tetapi memerlukan penggunaan yang hati-hati dan berpengetahuan agar terhindar dari potensi masalah.

1 komentar

 
GN⁺ 2023-06-28
Opini Hacker News
  • Keterbatasan dan kekurangan ORM, misalnya tidak bisa memakai database lain serta tetap memerlukan pengetahuan SQL, mendapat banyak kritik.
  • Membangun lapisan data satu per satu per kueri dengan interpolasi string dan pendekatan yang mendekati JDBC mentah dianggap sebagai pendekatan yang lebih baik.
  • ORM sering kali terbatas hanya pada pemetaan tabel dan view dasar, sehingga mengabaikan fitur dan kemampuan SQL yang lebih canggih.
  • Ada dua jenis ORM: yang berbasis model domain dan yang menghasilkan model domain dari database yang sudah ada.
  • ORM seperti jOOQ dan Hibernate, dengan implementasi serta fitur yang beragam, masing-masing digunakan untuk tujuan yang berbeda.
  • ORM bisa berguna dalam aplikasi kompleks dengan banyak tabel dan relasi foreign key yang tepat.
  • Menggunakan SQL mentah di dalam string literal dianggap sebagai alternatif ORM, dan alat yang menghasilkan pembungkus kueri juga bisa digunakan.
  • ORM yang pragmatis lebih disukai, yaitu yang tidak berusaha menyembunyikan semuanya dalam satu bundel atau memperkenalkan bahasa kuerinya sendiri.
  • SQLAlchemy dipuji karena menyediakan lapisan kueri yang nyaman tanpa menciptakan ulang SQL.
  • Tanpa menggunakan ORM, pengembang harus menulis dan memelihara antarmuka database mereka sendiri, yang dapat menimbulkan bug dan celah keamanan.
  • Kritik bahwa ORM melanggar prinsip SOLID dipandang sebagai benturan antara ajaran akademis dan pengembangan di dunia nyata.
  • Kurangnya pengalaman atau pengaruh praktik akademis dapat menimbulkan masalah dan menyebabkan pembengkakan anggaran.