ORM (Object Relational Mapping) <Terjemahan> Pengertian ORM adalah cara otomatis menghubungkan model obyek, kadangkadang disebut sebagai model domain ke sebuah database relasional dengan menggunakan metadata sebagai deskriptor dari obyek dan data. Menurut Wikipedia Object Relational Mapping (dibaca O/RM, ORM atau O/R Mapping) adalah teknik pemrograman untuk mengkonversi data antara system tipe tidak kompatibel dalam database relasional dengan bahasa pemrograman berorientasi obyek. ORM adalah sebuah teknik pemrograman yang memetakan sebuah objek dengan database. ORM ini akan membantu menjadi ‘jembatan’ antara obyek yang didefinisikan dalam kode program dengan database, bagaimana objek itu disimpan, diambil, dihapus dan sebagainya. Dengan ORM ini, programmer dibantu untuk melakukan aksi-aksi yang diperlukan terkait komunikasi objek ketika program dijalankan dengan database seperti menyimpan objek, mengambil data objek dari database kemudian ditampilkan, menghapus objek, mengubah objek dan sebagainya. Pengertian (lanjutan) Sebagai contoh penggunaan adalah ketika ada definisi data berupa person yang memiliki atribut id dan nama. Di database didefinisikan sebuah tabel dengan kolom id dan nama. Dengan tanpa menggunakan ORM, untuk menyimpan objek itu ke database adalah dengan menjalan perintah SQL : “INSERT INTO persons (id, nama) values (’1',’wisnu manupraba’)” Dengan menggunakan ORM, perintah SQL itu akan digantikan dengan fungsi misalkan save (tergantung fungsi yang disediakan oleh pustaka ORM yang digunakan), sehingga pemanggilannya adalah : Person person = new Person (1, “Wisnu Manupraba”); person.insert(); ORM -lah yang akan memetakan fungsi insert() sama dengan perintah SQL ”INSERT INTO….”. Ada banyak pustaka ORM yang tersedia saat ini, di berbagai bahasa. Di Java misalkan ada Hibernate dan MyIbatis (dulu namanya IBatis). Di PHP, berbagai framework seperti CakePHP, CodeIgniter, Yii dan sebagainya menyediakan ORMnya sendiri-sendiri. MANFAAT OBJECT RELATIONAL MAPPING Vijay (2008) memberikan contoh berikut untuk menunjukkan manfaat ORM. Sebuah perusahaan perangkat lunak yang telah mengembangkan software untuk produsen makanan anjing dan telah mengikuti aturan bahwa prosedur yang tersimpan adalah solusi tercepat, dan semua operasi CRUD harus ditangani dengan menggunakan prosedur yang tersimpan. Para pengembang di perusahaan ini telah mengikuti pendekatan ini dan menciptakan prosedur yang disimpan untuk setiap transaksi CRUD, kini sudah lebih dari 3.000 prosedur yang tersimpan. Menulis prosedur yang tersimpan tidak sama dengan desain yang buruk. Sebaliknya, prosedur tersimpan jika dikelola dengan benar adalah alternatif yang sangat baik untuk SQL dinamis. MENGAPA MENGGUNAKAN MAPPING ? Akar masalahnya adalah bahwa obyek-obyek tidak dapat langsung disimpan ke database dan diambil dari database relasional. Sementara itu obyek memiliki identitas, state, dan perilaku di samping data, sedangkan RDBMS hanya menyimpan data saja. Bahkan data yang berdiri sendiri dapat menjadi masalah, karena seringkali tidak ada pemetaan langsung antara bahasa pemrograman (misalnya, C # atau Java) dengan (Relational Database Management System) RDBMS tipe data. Lebih jauh lagi, sementara objek yang dilalui menggunakan referensi langsung, tabel RDBMS berhubungan melalui nilai-nilai di dalam foreign key dan primary key. Selain itu, RDBMS saat ini tidak memiliki paralel untuk objek inheritance data dan perilaku. Akhirnya, tujuan dari model relasional adalah untuk menormalkan data (yaitu, menghilangkan data redundan dari tabel), sedangkan tujuan desain berorientasi obyek adalah model proses bisnis dengan menciptakan obyek-obyek dunia nyata dengan data dan perilaku. MAPPING INHERITANCE Database relasional tidak selalu mendukung inheritance (warisan), memaksa untuk memetakan struktur warisan dalam skema objek ke skema data . Konsep warisan menyebabkan beberapa masalah ketika menyimpan objek ke dalam DB relasional. Bagaimana mengatur atribut mewarisi dalam model data ? Ada tiga solusi utama untuk warisan pemetaan ke dalam database relasional. Teknik-teknik ini: > Map entire class hierarchy to a single table > Map each concrete class to its own table > Map each class to its own table ORM Design Approaches Pendekatan Bottom Up Pendekatan Bottom Up adalah mulai dari bagian bawah atau dalam hal ini database, dan cara kerja menuju ke atas hingga ke model obyek. Dalam LINQ to SQL (Language Integrated Query in .Net.) desainer, ini adalah pendekatan yang paling didukung. LINQ to SQL mendukung pendekatan lain, tetapi cara tercepat dan termudah adalah mulai dengan database dan menghasilkan model objek dari skema. . ORM Design Approaches (lanjutan) Pendekatan Top Down Model Pendekatan Top Down ialah pendekatan pada kebutuhan bisnis atau konseptual bukan database. Kelemahan utama pendekatan ini adalah sebagai tantangan bagi orang-orang yang tidak akrab dengan pendekatan ini, dan butuh waktu lama untuk mempelajarinya Pendekatan Meet in the Middle Pendekatan Meet in the Middle yang paling berlaku adalah untuk situasi di mana model database dan obyek sudah ada, dan tujuan adalah untuk menentukan pemetaan antara keduanya. Di beberapa kasus dimana tidak ada sebuah model domain yang ortoganal transek dengan database, maka pendekatan ini mengubah pendekatan bottom up dan pendekatan top down. ORM FRAMEWORKS AND TOOLS Ada banyak framework ORM yang digunakan saat ini. Richardson (2009) memberikan gambaran tersendiri dari framework ORM yang popular saat ini. Sebagai contoh Hibernate, Toplink and OpenJPA framework yang populer dengan Java developers. Yang terbaru ada dua framework ORM yang digunakan oleh perusahaan yaitu Active Record for Ruby dan GORM ( Grails Object Relational Mapping) for Groovy. Persyaratan Mutu untuk ORM Vijay (2008) memberikan kriteria dasar untuk perangkat ORM yang berkualitas, antara lain : •Object-to-database mapping. •Object caching •Multiple database-platform support •Lazy loading •Nonintrusive persistence •Multiple object-oriented framework support •Stored procedure support ORM DENGAN HIBERNATE Hibernate adalah perangkat untuk memudahkan akses database. Hibernate menangani koneksi database dari aplikasi Java ke Database Server. Hibernate juga merupakan framework untuk memetakan object ke RDBMS sehingga dapat melakukan mapping dari tabel database ke class ORM DENGAN HIBERNATE (lanjutan) Fitur Hibernate Pemilihan tipe data otomatis. Hibernate secara otomatis mengkonversi tipe data dari java menjadi tipe data database server / engine yang digunakan. Hibernate mendukung banyak database populer. Hibernate dapat digunakan pada database MySQL, SQL Server, Oracle, DB2, Postgree, dan lainya. Sehingga penggantian database engine tidak merubah aplikasi yang sudah dibuat. Mengapa diperlukan Hibernate? Hibernate diperlukan oleh programmer yang ingin menjadikan database sebagai tempat penyimpanan data, dan melakukan syntax query melalui obyek dan obyek meneruskan query ke dalam database tujuannya adalah untuk mempermudah dan merelasionalkan query dari obyek tersebut dan mengambilnya dari database. Hal ini dilakukan agar programmer bisa langsung mengkoneksi database meskipun dia tidak melakukan coding dari awal. ORM DENGAN HIBERNATE (lanjutan) Siapa saja pengguna Hibernate? Pengguna hibernate adalah programmer yang ingin mengintegrasikan obyek ke dalam database, programmer yang tidak memiliki banyak data, programmer yang familiar dengan syntax SQL juga sangat dianjurkan untuk menggunakan hibernate. Apa manfaat yang diperoleh dengan menggunakan Hibernate? Dengan menggunakan hibernate, programmer bisa mengitegrasikan obyek ke dalam database sehingga programmer bisa melakukan create, update, dan delete (CRUD) melalui obyek. Selain itu, programmer juga dapat memproses penulisan data lebih cepat