pengantar
Pemetaan Relasional Objek (ORM) adalah teknik yang memungkinkan Anda membuat kueri dan memanipulasi data dari database menggunakan paradigma berorientasi objek. Ketika berbicara tentang ORM, kebanyakan orang mengacu pada perpustakaan yang mengimplementasikan teknik Pemetaan Relasional Objek, oleh karena itu frasa "ORM".
Pustaka ORM adalah pustaka biasa yang ditulis dalam bahasa pilihan Anda yang merangkum kode yang diperlukan untuk memanipulasi data, jadi Anda tidak lagi menggunakan SQL; Anda berinteraksi langsung dengan objek dalam bahasa yang sama dengan yang Anda gunakan.
Misalnya, berikut adalah kasus imajiner sepenuhnya dengan bahasa palsu:
Anda memiliki kelas buku, Anda ingin mendapatkan kembali semua buku yang penulisnya adalah "Linus". Secara manual, Anda akan melakukan hal seperti itu:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
Dengan pustaka ORM, akan terlihat seperti ini:
book_list = BookTable.query(author="Linus");
Bagian mekanis ditangani secara otomatis melalui perpustakaan ORM.
Pro dan kontra
Menggunakan ORM menghemat banyak waktu karena:
- KERING : Anda menulis model data hanya di satu tempat, dan lebih mudah untuk memperbarui, memelihara, dan menggunakan kembali kode.
- Banyak hal dilakukan secara otomatis, dari penanganan database hingga I18N .
- Ini memaksa Anda untuk menulis kode MVC , yang pada akhirnya membuat kode Anda sedikit lebih bersih.
- Anda tidak perlu menulis SQL dengan format yang buruk (sebagian besar programmer Web benar-benar payah, karena SQL diperlakukan seperti bahasa "sub", padahal sebenarnya itu sangat kuat dan kompleks).
- Sanitasi; menggunakan pernyataan atau transaksi yang disiapkan semudah memanggil metode.
Menggunakan pustaka ORM lebih fleksibel karena:
- Ini cocok dengan cara alami pengkodean Anda (itu bahasa Anda!).
- Ini mengabstraksi sistem DB, sehingga Anda dapat mengubahnya kapan pun Anda mau.
- Model terikat dengan lemah ke aplikasi lainnya, sehingga Anda dapat mengubahnya atau menggunakannya di mana pun.
- Ini memungkinkan Anda menggunakan kebaikan OOP seperti warisan data tanpa sakit kepala.
Tapi ORM bisa menyebalkan:
- Anda harus mempelajarinya, dan perpustakaan ORM bukanlah alat yang ringan;
- Anda harus mengaturnya. Permasalahan yang sama.
- Performa oke untuk kueri biasa, tetapi master SQL akan selalu bekerja lebih baik dengan SQL miliknya untuk proyek besar.
- Ini mengabstraksi DB. Meskipun tidak apa-apa jika Anda tahu apa yang terjadi di balik layar, ini adalah jebakan bagi pemrogram baru yang dapat menulis pernyataan yang sangat serakah, seperti pukulan keras dalam satu
for
putaran.
Bagaimana cara mempelajari ORM?
Nah, gunakan satu. Library ORM mana pun yang Anda pilih, semuanya menggunakan prinsip yang sama. Ada banyak pustaka ORM di sekitar sini:
Jika Anda ingin mencoba pustaka ORM dalam pemrograman Web, Anda akan lebih baik menggunakan keseluruhan kerangka kerja seperti:
- Symfony (PHP, menggunakan Propel atau Doctrine).
- Django (Python, menggunakan ORM internal).
Jangan mencoba menulis ORM Anda sendiri, kecuali Anda mencoba mempelajari sesuatu. Ini adalah pekerjaan yang sangat besar, dan yang lama membutuhkan banyak waktu dan pekerjaan sebelum menjadi dapat diandalkan.