Pengenalan Object Relational-Mapping (ORM): Menghubungkan Model dengan Database
Apa itu ORM?
Object Relational-Mapping adalah teknik untuk kueri dan manipulasi data dari database menggunakan paradigma berbasis obyek (Object-Oriented Paradigm). Biasanya, orang-orang yang menyebut “ORM” tetapi mereferensikan ke library yang mengimplementasikan teknik Object Relational-Mapping.
Library ORM adalah library yang ditulis dalam bahasa pemrograman pilihan anda yang merangkum kode yang diperlukan untuk kueri dan memanipulasi data, sehingga anda tidak perlu menggunakan SQL lagi. Dengan kata lain, anda berinteraksi langsung dengan objek dalam bahasa yang sama dan sedang anda gunakan.
Contoh Implementasi ORM dengan Pseudo-Code
Jika anda ingin mengambil data film ber-genre Action dari tabel movies untuk digunakan dalam class Movie, maka anda harus melakukannya secara manual, seperti berikut:
Dengan library ORM, anda cukup memanggil kelas dan metode library sehingga kode anda menjadi lebih sederhana seperti berikut:
Bagian detail dari MovieTable dan query telah diurus oleh library ORM.
Keunggulan dan Kekurangan dari Object Relational-Mapping
Keunggulan
- Menggunakan ORM menghemat banyak waktu karena:
- DRY: Anda menulis model data hanya di satu tempat, dan lebih mudah untuk memperbarui, memelihara, dan menggunakan kembali kodenya.
- Banyak hal dilakukan secara otomatis dengan ORM, mulai dari penanganan database hingga I18N.
- ORM memaksa anda untuk menulis kode MVC, yang pada akhirnya membuat kode Anda sedikit lebih bersih (clean architecture).
- Tidak perlu menuliskan kode SQL secara langsung.
- Sanitasi; menggunakan statement atau transaction yang telah disiapkan semudah memanggil suatu metode.
- Menggunakan library ORM lebih fleksibel karena:
- Cocok dengan style kode sesuai dengan bahasa pemrograman yang anda gunakan.
- Abstraksi sistem database sehingga anda dapat menggantinya di mana pun.
- Model dari ORM terikat secara lemah dengan bagian aplikasi lainnya, sehingga anda dapat menggunakan atau menggantinya di mana pun.
- ORM memberikan kemudahan OOP seperti data inheritance tanpa membuat anda pusing dengan implementasinya.
Kekurangan
- Anda harus mempelajari ORM, dan library ORM termasuk salah satu library yang berat.
- Anda harus mengatur ORM di dalam kode anda.
- Kinerja ORM untuk kebanyakan kueri itu baik tetapi kueri kompleks lebih cocok dengan SQL, apalagi di aplikasi yang besar dan mirip enterprise
- ORM mengabstraksi database. Meskipun tidak apa-apa jika Anda mengetahui apa yang terjadi di balik layar, ini adalah jebakan bagi pemrogram pemula yang dapat menulis statement yang sangat rakus, seperti heavy hit di looping for .
Bagaimana cara mempelajari Object Relational-Mapping (ORM)?
Gunakan salah satu library ORM yang telah disediakan dalam bahasa pemrograman yang anda gunakan karena semua library ORM memiliki prinsip yang sama. Contoh library ORM dalam beberapa bahasa pemrograman populer:
- PHP : Doctrine dan RedBeanPHP
- Node.js : Sequelize, TypeORM, dan Mongoose
- Python : SQLAlchemy dan Peewee
Jika anda ingin menggunakan library ORM dalam pemrograman web, maka sebaiknya menggunakan framework khusus pemrograman web yang telah memiliki/mudah diintegrasikan dengan library ORM seperti:
- PHP : Laravel dan CodeIgniter
- Node.js : Express.js, NestJS, dan Fastify
- Python : Django dan FastAPI
Jangan mencoba menulis ORM Anda sendiri, kecuali Anda mencoba mempelajari sesuatu dengan membuat ORM karena library ORM adalah pekerjaan yang sangat besar dan membutuhkan waktu lama dan iterasi pengembangan berkali-kali sebelum dapat diandalkan.