Oleh:
Kelompok V
POGRAM STUDI: MAGISTER ILMU KOMPUTER (MKOM) PROGRAM PASCASARJANA UNIVERSITAS BUDI LUHUR
..................................
2 3 3 6 6 7 7 8 8 9 9 9 10 10 10 10 11 11 12 12 12 13 14
ABSTRAKSI
PENDAHULUAN
MANFAAT OBJECT RELATIONAL MAPPING .. MENGAPA MENGGUNAKAN MAPPING .. 4.1 Impedance Mismatch ....
V.
MAPPING INHERITANCE ... 5.1 5.2 5.3 Map entire class hierarchy to a single table . Map each concrete class to a table ... Map each class to its own table
VI.
ORM DESIGN APPROACHES .. 6.1. Pendekatan Bottom Up 6.2. Pendekatan Top Down . 6.3. Pendekatan Meet in the Middle .. .
VII.
8.1. Fitur Hibernate .. 8.2. Mengapa diperlukan Hibernate? .......................................................................... 8.3. Siapa saja pengguna Hibernate? ..........................................................................
8.4. Apa manfaat yang diperoleh dengan menggunakan Hibernate? .......................... IX. KESIMPULAN ..
Daftar Pustaka ..
I.
ABSTRAKSI
ORM (Object Relational Mapping) adalah sebuah teknik pemrograman yang menghubungkan perbedaan tipe data pada konsep pemrograman yang berorientasi objek dengan konsep RDBMS. Dengan mengimplementasikan ORM, developer bisa lebih berfikir secara objek dibanding dengan tabel dan kolom-kolom yang menjadi ciri dari model relasional. ORM digunakan untuk menjaga kemurnian pola pikir developer atas pemrograman berorientasi objek. Implementasi ORM terletak pada layer persistent yaitu layer yang berhubungan dengan database. Tugas ORM disini ialah untuk memetakan data dari database ke objek atau sebaliknya. Ada beberapa framework ORM yang dapat digunakan sebagai DAO ( Data Access Object) salah satunya adalah Hibernate.
II.
PENDAHULUAN
Saat ini, pemrograman berorientasi obyek sudah diterima secara luas dalam pengembangan aplikasi bisnis. Pengembangan aplikasi berorientasi obyek menyediakan metode yang lebih cocok dan fasilitas pemodelan objek lebih nyata daripada paradigma pemrograman terstruktur. Sedangkan objek-orientasi telah menjadi standar paradigma pengembangan perangkat lunak dengan UML (OMG, 2004) sebagai bahasa sehari-hari, tampaknya tidak ada solusi terbaik untuk penyimpanan persisten objek. Pendekatan yang paling alami akan penggunaan sistem manajemen database berorientasi objek (OODBMS) untuk tujuan ini. Meskipun standar ODMG untuk database berorientasi objek (Cattell et al, 1999.) Dan implementasi yang telah jatuh tempo selama dekade terakhir, sistem manajemen relasional dan object-relational database (RDBMSs / ORDBMSs) masih umum digunakan dan hampir tidak ada indikasi untuk perubahan yang signifikan di masa depan. Karena popularitas penyimpanan data relasional dengan basis instalasi luas di satu sisi dan penggunaan konsepkonsep berorientasi obyek untuk pengembangan perangkat lunak di sisi lain, objek aplikasi mau tidak mau harus disimpan dalam (obyek-) database relasional. Sayangnya, interaksi objek dan hubungan tidak sepele, karena ada jarak yang signifikan antara paradigma berorientasi objek dan relasional. Jarak ini sering disebut sebagai ketidaksesuaian impedansi objek-relasional. (Smith dan Zdonik, 1987). Criteria Defining standard Support for objectoriented features RDBMS SQL2 Does not support; It is difficult to map program object to the database OODBMS ODMG-2.0 Supports extensively ORDBMS SQL3 (in process) Limited support; mostly to new data type
Usage
Easy to use
OK for programmers; some SQL access for end users Supports a wide variety of datatypes and data with complex interrelationships Relatively less performanc
Supports Abstract datatypes and complex relationships Expected to perform very well
Product maturity
This concept is few years old and so relatively matur feature OQL is similar to SQL, but with additional features like Complex objects and object-oriented features It can handle all types of complex applications, reusability of code, less coding Low performance due to complex query optimization, inability to support large-scale systems Presently lacking vendor support due to vast size of RDBMS market
SQL3 is being developed with OO features incorporated in it Ability to query complex applications and ability to handle large and complex applications Low performance in web application
Advantages
Its dependence on SQL, relatively simple query optimization hence good performance Inability to handle complex applications
Disadvantage
It is considered to be highly successful so the market size is very large but many vendors are moving towards ORDBMS
All major RDBMS vendors are after this so has very good future
ORM adalah cara otomatis menghubungkan model obyek, kadang-kadang 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 Object Relational Mapping 4
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. 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. Komponen utama dari banyak aplikasi perusahaan adalah kode yang transfer objek dan keluar dari database operasional. Solusi termudah adalah sering untuk menggunakan framework ORM, yang memungkinkan pengembang untuk menentukan pemetaan antara model objek dan skema database serta mengekspresikan database akses operasi dalam hal objek. Tidak mungkin untuk menulis seluruh aplikasi dalam perintah SQL, dan sebagian besar aplikasi enterprise menggunakan bahasa pemrograman berorientasi objek. Dalam hal ini, Anda harus melewati proses untuk mengumpulkan persyaratan, membuat desain, mengembangkan perangkat lunak, dan uji. Namun, selama tahap desain, bagaimana anda merencanakan lapisan data akses Anda? Akan Anda gunakan prosedur yang disimpan untuk Create, Read, Update, dan Delete (CRUD) transaksi Anda? Ada aplikasi domain seperti spasial, sistem informasi geografis (GIS) dan aplikasi multimedia di mana penggunaan fitur object-relational adalah wajib. Ada banyak juga jenis aplikasi lain yang sebagai kandidat yang baik untuk fitur object-relational, tapi sering diimplementasikan dengan menggunakan desain relasional murni. Feuerlicht (2008) berpendapat bahwa penggunaan fitur object-relational dibatasi dalam praktek karena kurangnya metodologi desain yang dapat membimbing desainer database dalam membuat keputusan tentang pilihan desain yang melibatkan perbandingan solusi relasional dan objectrelational. Urban (2003) dan Marcos (2001) mengkajinya penggunaan diagram UML untuk melaksanakan pemetaan Object-Relational dan pemodelan OR. Chilton (2006) memberikan gambaran tentang teknik pemodelan data termasuk OR-Mapping.
III.
Penting untuk dipahami bahwa ada banyak manfaat menggunakan ORM daripada teknik akses data lainnya. Pertama, ORM secara otomatis object-to-table dan table-to object conversion, yang menyederhanakan pengembangan aplikasi. Perkembangan pasar kini lebih disederhanakan menuju ke kecepatan waktu dan mengurangi biaya pengembangan dan pemeliharaan. Selanjutnya, ORM membutuhkan sedikit kode dibandingkan dengan menggunakan perintah SQL, ORM menyediakan caching transparan objek pada klien dengan demikian meningkatkan kinerja sistem. Sebuah ORM yang baik adalah solusi yang sangat optimal yang akan membuat aplikasi Anda lebih cepat dan lebih mudah. 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. Perusahaan perangkat lunak sekarang memiliki peluang untuk menjual perangkat lunak untuk produsen makanan kucing, tetapi perangkat lunak perlu mengubah untuk memenuhi kebutuhan bisnis perusahaan makanan kucing. Untuk meningkatkan portabilitas perangkat lunak mereka, perusahaan ingin menggunakan ORM .Mereka membangun model obyek untuk mewakili bisnis dan untuk mengoptimalkan dan menormalkan database perusahaan. Dengan cepat perusahaan software mampu menghilangkan ribuan prosedur yang tersimpan dan sebagai gantinya menggunakan fitur pemetaan otomatis untuk menghasilkan kode akses SQL. Hal ini mengurangi biaya pengembangan. Contoh ini disederhanakan, tetapi ini menunjukkan bahwa ORM dapat digunakan untuk meningkatkan akses database penanganan dari kode berorientasi obyek.
IV.
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. Munculnya kebutuhan baru yang tidak dapat terpenuhi oleh Sistem Manajemen Database Generasi 1 (Hierarkis & Jaringan), dan generasi 2 (RDBMS), sehingga kebutuhan mendesak untuk segera Object Relational Mapping 6
menggunakan Sistem Manajemen Database Generasi 3 (OODBMS). ORM menjadi jembatan antara obyek yang didefinisikan dalam kode program dengan database. ORM sebagai syarat mutlak yang dibutuhkan dalam membuat OODBMS.
4.1
Impedance Mismatch
Para pengembang beralasan yang paling penting menggunakan teknik ORM adalah ketidakcocokan impedansi yang terjadi antara kode obyek dan database relasional. Model berorientasi objek didasarkan pada prinsip bahwa aplikasi dibangun dengan menggunakan kumpulan komponen yang dapat digunakan kembali yang disebut objek. Di sisi lain, pola database relasional adalah satu di mana menyimpan database data dalam bentuk tabel. Sedangkan database sebagian besar didasarkan pada algoritma murni matematis, model berorientasi objek didasarkan pada representasi kehidupan dan lingkungan seseorang. Oleh karena itu, untuk mengatasi kesenjangan antara dua paradigma, perlu untuk memetakan model objek ke model data.
V.
MAPPING INHERITANCE
Database relasional tidak selalu mendukung inheritance (warisan), memaksa anda untuk memetakan struktur warisan dalam skema objek Anda ke skema data Anda. Konsep warisan menyebabkan beberapa masalah ketika menyimpan objek ke dalam DB relasional. Bagaimana mengatur atribut mewarisi dalam model data Anda? 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
Person name
Costumer preference
Employee salary
Diagram pada Gambar 3 menggambarkan tiga kelas - Person, adalah abstract class, dan dua concrete classes, Karyawan dan Pelanggan. Karena Person yang abstrak, namanya akan ditampilkan dalam huruf miring. Object Relational Mapping 7
5.1
Atribut dari semua kelas disimpan dalam tabel Person. Sebuah strategi penamaan tabel yng baik adalah dengan menggunakan nama kelas hirarki, dalam cara yang sangat mudah. Nama tabel biasanya sebagai kelas induk. Sebuat atribut tambahan yang ditambahkan untuk menunjukan tipe dari Person. Dua kolom telah ditambahkan ke table - PersonPOID dan PersonType. Kolom pertama adalah kunci utama (Primary Key) dan kolom kedua adalah kode yang menunjukkan apaka orang tersebut adalah pelanggan, karyawan, atau mungkin keduanya. PersonPOID adalah persistent object identifier (POID), sering hanya disebut object identifier (OID), yang merupakan surrogate key. Pendekatan ini sangat sederhana dan memungkinkan seseorang untuk dengan mudah menambahkan kelas baru. Karena hanya ada satu tabel, tidak ada alasan apapun untuk menggabungkan data query. Kurangnya tabel yang bergabung biasanya menunjukkan pengambilan data lebih efisien. Namun, tidak semua atribut yang relevan untuk semua Person types. Hal ini dapat mengakibatkan banya null atau nilai-nilat atribut yng kosong dalam tabel database. Efek ini akan menyia-nyiakan ruang database. Coupling meningkat antara hirarki kelas dan table. Hal ini tidak diinginkan sebagai perubahan dalam satu kelas yang dapat mempengaruhi kelas-kelas lain dalam hirarki. Tabel yang dihasilkan mungkin tidak sesuai dengan praktik terbaik di dalam hal normalisasi database.
5.2
Dengan pendekatan ini, tabel dibuat untuk setiap concrete class, masing-masing table termasuk atribut dilaksanakan oleh kelas dan atribut yang diwariskan. Gambar berikut menggambarkan model data fisik untuk kelas hirarki yang telah dibahas di atas ketika pendekatan ini diambil. Ada tabel sesuai dengan masing-masing Costumer dan kelas karyawan karena mere concrete, objek yang instant dari mereka, tetapi tidak bagi Person, karena abstrak. Setiap tabel ditugaskan primary key-nya sendiri, costumerPOID dan employeePOID masing-masing.
Keuntungan metode ini adalah kinerja yang baik dalam hal mengakses data sebuah objek tunggal. Namun, ketika sebuah perubahan kelas, hal itu tidak hanya akan diperlukan untuk mengubah tabel terkait, tetapi juga tabel yang sesuai dengan anak kelasnya. Object Relational Mapping 8
5.3
Berikut ini adalah strategi Anda untuk membuat satu tabel per kelas, dengan satu kolom per atribut bisnis dan informasi identifikasi yang diperlukan. Gambar berikut ini menggambarkan model data fisik untuk kelas hirarki contoh di atas bila masing-masing kelas dipetakan ke tabel sendiri. Data untuk kelas Costumer disimpan dalam dua tabel, Costumer dan Person. Oleh karena itu untuk mengambil data ini, Anda akan perlu untuk menggabungkan dua tabel. Penentuan key sangat menarik. Perhatikan personPOID bagaimana digunakan sebagai primary key untuk semua tabel. Untuk tabel Costumer dan Employee personPOID adalah primary key dan foreign key yang digunakan untuk menjaga hubungan ke tabel Person.
0..1
Setiap kelas memiliki tabel yang terkait dalam database. Ada pemetaan langsung antara kelaskelas dan tabel-tabel. Dengan metode ini, mudah untuk menambahkan atau memodifikasi subclass atau untuk memodifikasi kelas dasar. Pemetaan one-to-one membuat pendekatan ini mudah dimengerti. Akses data dalam hal membaca dan menulis dapat menjadi lambat karena adanya tabel yang lebih terlibat. Tabel-tabel yang digabungkan mungkin diperlukan untuk melakukan operasi data terkait.
VI.
Pada dasarnya, ada tiga kunci pendekatan untuk desain ORM: Bottom Up, Top Down, dan Meet in the Middle. Setiap pendekatan memiliki keuntungan dan masalah.
6.1
Pendekatan Bottom Up
Pendekatan Bottom Up adalah Anda mulai dari bagian bawah atau dalam hal ini database, dan cara kerja Anda 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 Object Relational Mapping 9
pendekatan lain, tetapi cara tercepat dan termudah adalah mulai dengan database dan menghasilkan model objek dari skema Anda.
6.2
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. Namun pendekatan ini memungkinkan Anda untuk menjadikan domain dasar pada kebutuhan bisnis yang spesifik, sehingga memberikan Anda pendekatan desain yang paling fleksibel.
6.3
Pendekatan Meet in the Middle yang paling berlaku adalah untuk situasi di mana model database dan obyek sudah ada, dan tujuan Anda 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.
Stored procedure support: Kadang-kadang prosedur yang benar-benar tersimpan adalah satu-satunya pilihan yang layak, karena masalah kinerja dengan query di tool ORM berjalan lama atau sangat kompleks (misalnya, reporting).
Hibernate
Hibernate properties XML Mapping
Database
8.1.
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. Mapping Java Object menjadi Struktur Tabel Database.Hibernate secara otomatis menciptakan struktur table sesuai dengan model aplikasi yang dibuat. Connection Pooling. Digunakan untuk menimalkan jumlah koneksi terbuka antara aplikasi dan database. Serta Transaction Management yaeg memudahkan mapping one-to-many dan many-to-many.
11
8.2.
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. Dan juga, database adalah repository yang paling aman karena kematureannya. Jadi, walaupun programmer tidak melakukan coding dari awal pada obyek, programmer bisa langsung melakukan query yang obyeknya terhubung dalam suatu database. Selain itu, karena kinerja hibernate dengan mengambil beberapa contoh objek yang memiliki banyak hubungan dengan objek lain sehingga memungkinkannya untuk melakukan fitur-fitur dari relasional.
8.3.
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.
8.4.
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.
12
IX.
KESIMPULAN
Dalam tulisan ini, desain dari konsep mengenai ORM telah diperkenalkan. ORM adalah jembatan yang menghubungkan antara kode obyek ke database relasional. Tindakan pemetaan adalah cara yang efisien untuk mengatasi ketidakcocokan yang ada antara bahasa pengembangan berorientasi obyek dengan database relasional. Seperti ketidakcocokan dapat diklasifikasikan sebagai ketidaksetaraan antara operasi bahasa berorientasi obyek dan fungsi dari database relasional. Sebagai contoh, adalah mustahil untuk mengambil model obyek dan menyimpannya langsung ke database tanpa beberapa manipulasi. Hal ini terjadi karena database tidak memiliki kemampuan untuk menangani inheritance (warisan) atau polimorfisme, dua prinsip dasar dalam pengembangan berorientasi obyek. ORM merupakan solusi yang baik untuk mengatasi perbedaan yang melekat antara kode obyek dengan database relasional. Tool ORM yang Anda pilih untuk digunakan dalam perangkat lunak Anda harus dievaluasi berdasarkan seperangkat kriteria yang memenuhi tujuan Anda, namun, berikut ini adalah titik awal yang baik: pemetaan obyek-ke-database, cache objek, portabilitas (dukungan multiple DB), lazy loading, nonintrusive persistence, dan disimpan dalam dukungan prosedur. Selain itu, bersama dengan kriteria dan arah proses yang Anda gunakan untuk memilih alat ORM Anda, Anda juga harus berpikir tentang pendekatan desain ORM. Ada tiga pendekatan utama yang dapat digunakan dalam pengembangan ORM: Top Down, Meet in the Middle, and the Bottom Up approaches.
13
Daftar Pustaka
Simitchi. Aykun, 2009, Object-Relational Mapping in Database Design, University of Washington, United States. https://faculty.washington.edu/markk/sites/default/files/Simitci,%20Aysun%20%20ObjectRelationalMapping(ORM).pdf Ruckemann. Clauss-Peter, 2009, Dynamical Parallel Applications on Distributed and High Performance Computing Systems, Leibniz Universitat Hannover, Germany. http://www.iariajournals.org/software/soft_v2_n23_2009_paged.pdf http://www.developer.com/java/data/article.php/3391131/An-Introduction-to-Object-RelationalMapping-with-Hibernate.htm
14