HIBERNATE

Hampir sebagian besar aplikasi yang dikembangkan saat ini adalah aplikasi yang menggunakan persistence storage misalnya database. Java sebagai bahasa pemrograman yang popular juga dapat digunakan untuk mengembangkan aplikasi database, mulai dari aplikasi database sederhana sampai aplikasi bisnis yang besar. Operasi-operasi umum yang dilakukan oleh aplikasi terhadapt database antara lain : Create, Read, Update dan Delete atau biasa disingkat CRUD. Hibernate adalah sebuah framework yang digunakan untuk memudahkan dan meningkatkan produktifitas dalam mengembangkan aplikasi database yang berbasis java.

Object Oriented Mapping (ORM)

Bagi para programmer mungkin pernah mengalami dimana sebuah aplikasi database yang dibuat dan sudah hamper selesai harus mengalami perubahan pada struktur databasenya. Jika hal ini terjadi maka mau tidak mau aplikasi tadi harus direfactor 9dilakukan perubahan) khususnya bagian program yang berhubungan dengan database. Ratusan atau bahkan ribuan baris kode program khususnya perintah-perintah SQLnya harus disesuaikan dan dites lagi. Tentunya ini bukan merupakan pekerjaan yang menyenangkan dan sudah tentu tidak efisien karena akan memakan waktu yang relative lama.

Object Oriented Programming(OOP) adalah sebuah paradigma pemrograman yang menggunakan object untuk pemodelan aplikasi. Dengan pendekatan OOP desain sebuah aplikasi menjadi lebih mudah. Sebagai ilustrasi misalnya ada kasus beriut :”Seoranng mahasiswa dapat mengikuti 1 atau lebih matakuliah”. Maka, dengan pendekatan OOP dapat digambarkan objek-objek dalam diagram kelas sebagai berikut


Jika diimplementasikan dalam relational database maka akan diciptakan tabel tabel berikut beserta relasinya.

Dari gambar diagram kelas dan relasi database diatas, terlihat bahwa ada perbedaan antara OOP dengan relational database. Pada diagram kelas hanya terdapat 2 buah objek yang digunakan, sedangkan pada relasi database terdapat 3 tabel untuk kasus diatas.

Dengan OOP mendesain alikasi menjadi lebih mudah, tetapi sebaliknya tidak mudah diimplementasikan dalam program. Pada kasus diatas, apabila akan diciptakan sebuah objek mahasiswa, maka kode program dibuat sedemikian rupa untuk membaca isi database dari 3 tabel tersebut, kemudian data tersebut dikonversi menjadi objek Mahasiswa baru kemudian dapat digunakan dalam aplikasi. Demikian juga kalau akan menyimpan objek Mahasiswa, makaprogram harus melakukan proses untuk mengkonversi objek mahasiswa menjadi data yang dapat disimpan ke dalam tabel-tabel tersebut.

Object Relational Mapping adalah proses mengubah [object] menjadi sebuah model yang dapat diterima oleh system yang dituju. Apabila sistemnya berupa database relasional, berarti objek diubah menjadi bentuk yang dapat diterima oleh database relasional.

· Dari gambar diatas terlihat bahwa ORM dapat berupa layer tambahan yang berfungsi untuk melakukan konservasi data. Dengan adanya layer ORM maka aplikasi tidak perlu mengetehaui kompleksitas yang terjadi dalam hal akses data ke databse. Aplikasi hanya berinteraksi dengan objek.


Plain JDBC VS Hibernate

· Manipulasi Database dengan JDBC

- JDBC merupakan standar teknologi didalam Java yang digunakan untuk pengembangan aplikasi database. JDBC menyediakan library library atau Aplication Progaming Interface yang dibutuhkan untuk manipulasi database.

- Melalui JDBC kita dapat melakukan koneksi ke database, mengirimkan perintah perintah SQL (Structure Query Language)

· Umumnya penggunaan JDBC pada program mengikuti langkah langkah berikut ini

- Baca Driver Database

o Untuk setiap database yang digunakan akan memiliki JDBC driver yang berbeda beda. Dengan demikian jika aplikasi menggunakan database MySQL misalnya, maka driver yang digunakan adalah driver JDBC driver khusus untuk driver database MySQL.

· Baca Driver

· Definisikan URL Databse

- Langkah selanjutnya adalah mendefinisikan URL database, user dan password untuk mengakses database. URL database pada JDBC juga tergantung pada database engine yang digunakan.

Contoh berikut adalah URL database ke MySQL :

· Ciptakan Statement Objek

- Setelah objek statement tercipta, maka objek ini dapat digunakan untuk mengirimkan perintah SQL ke database.

· Eksekusi Query

- Setelah objek statement tercipta, maka objek ini dapat digunakan untuk mengirimkan perintah SQL ke database.

· Proses Resultnya

- Setelah eksekusi SQL berhasil misalnya membaca data yang disimpan dalam objek Resultset, maka selanjutnya data tersebut dapat di manipulasi atau dip roses.

· HIBERNATE

- Adalah implementasi ORM (Object Relational Mapping) opensource untuk bahasa pemrograman Java. Hibernate menyediakan framework yang mudah dipelajari untuk melakukan mapping object oriented domain model ke relational database.

- Hibernate dikembangkan oleh developer Java dari seluruh dunia yang dipimping Gavin King. Sekarang Hibernate menjadi bagian dari Jboss, inc : salah satu vendor besar application server Java.

- Hibernate memudahkan pengembangan aplikasi database berbasis Java. Hibernate menangani koneksi database dari aplikasi Java ke database server. Hibernate berjalan diatas JDBC tetapi mengenkapsulasi segala kerumitan yang ada pada penggunaan JDBC.

· Berikut beberapa fitur Hibernate

- Pemilihan tipe data otomatis

- Hibernate secara otomatis mengkonversi tipe data dari java menjadi tipe data database server / engine yang digunakan.

- Mendukung banyak database popular (no vendor lock)

- Hibernate dapat digunakan pada database MySQL, SQL Server, Oracle, DB2, Postgree, dan lainya. Penggantian database engine tidak merubah aplikasi yang sudah dibuat.

- Mapping sturktur objek menjadi struktur table database.

- Hibernate secara otomatis menciptakan struktur table sesuai dengan model aplikasi yang dibuat.

- Connection Polling.

- Transaction Managament.

- Memudahkan mapping one – to – many dan many – to – many.

· Arsitektur Hibernate

Dari diagram diatas terlihat bahwa Hibernate menggunakan database dan konfigurasi untuk menyediakan persistence service pada aplikasi. Untuk menggunakan Hibernate, kita harus membuat class-class atau model atau persistence Object yang mengikuti paradigma pemrograman berorientasi objek. Class-class ini kemudian dimapping ke database menggunakan XML. File XML mapping ini merupakan bagian yang peling penting, karena file-file XML mapping ini yang akan yang diterjemahkan oleh Hibernate menjadi struktur – struktur table dalam database.

· Konfigurasi Hibernate

- Hibernate menggunakan file Hibernate.properties atau Hibernate.cfg.xml sebagai tempat konfigurasi environment nya. File yang umum digunakan adalah Hibernate.cfg.xml. Didalam file ini didefinisikan koneksik ke database, connection polling jika digunakan, dan mapping resource.

Pada file konfigurasi.cfg.xml diatas, database yang digunakan adalah dbperson yang running di localhost dengan user root dan password secret. Property dialect menggunakan “org.hibernate.dialect.MySQLDialect” ini menunjukan bahwa hibernate nanti akan MySQL sebagai database engine nya.

- Seperti yang sudah dijelaskan diatas bahwa Hibernate mendukung banyak database. Berikut adalah database beserta dialect yang didukung oleh Hibernate :

o DB2 – org.hibernate.dialect.DB2Dialect

o HypersonicSQL – org.hibernate.dialect.HSQLDialect

o Informix – org.hibernate.dialect.InformixDialect

o Ingres – org.hibernate.dialect.IngresDialect

o Interbas – org.hibernate.dialect.InterbaseDialect

o Pointbase – org.hibernate.dialect.PointbaseDialect

o PostgreSQL – org.hibernate.dialect.PostgreSQLDialect

o Mckoi SQL – org.hibernate.dialect.MckoiDialect

o Microsoft SQL Server – org.hibernate.dialect.SQLServerDialect

o MySQL – org.hibernate.dialect.MySQLDialect

o Oracle (any person) – org.hibernate.dialect.OracleDialect

o Oracle 9 – org.hibernate.dialect.Oracle9Dialect

o Progress – org.hibernate.dialect.ProgressDialect

o SAP DB – org.hibernate.dialect.SAPDBDialect

o Sybase – org.hibernate.dialect.SybaseDialect

o Sybase Anywhere – org.hibernate.dialect.SybaseAnywhereDialect

- Yang terakhir dari konfigurasi diatas adalah

baris Person.hbm.xml”/>. Bagian ini adalah mapping dari class Person.

· Persistence Class

- Hibernate menggunakan class POJOs (Plain Old Java Object) untuk melakukan mapping ketabel didalam database. Berikut adalah contoh class person yang nantinya dimapping ketabel person didalam database.

· Mapping Persistence Class ke Tabel

- Bagian yang paling penting dalam implementasi Hibernate adalah melakukan mapping persistence Class menggunakan XML dokumen. Setiap persistence class yang ada didalam aplikasi harus menggunakan dokumen XML. Berikut ini adlac class person untuk mapping diatas.

Dari mapping diatas, Hibernate secara otomatis akan menciptakan struktur table sebagai berikut.

· Manipulasi Persistance Object dengan Hibernate API

- Interface utama didalam Hibernate API adalah session. Session merupakan starting point untuk melakukan operasi ke database. Setelah object session dibuka, maka dapat digunakan untuk manipulasi persistence object.

· Menyimpan Persistance Object

- Hal pertama yang dilakukan untuk menyimpan persistence object adalah membuat object baru, dalam contoh diatas adalah object person. Untuk menyimpan object person kedalam table digunakan fungsi atau method save() dari object session.

· Membaca Persistence Object

- Session juga dapat digunaan untuk membaca data dari table. Hibernati menyediakan API yang lengkap untuk kebutuhan ini. Misalnya yang paling sederhana adalah membaca object dari table berdasarkan IDnya. Method yang digunakan adalah get() seperti pada contoh berikut ini.

· Mengubah Persistance Object

- Object person yang dibaca dapat diubah datanya dan oleh Hibernate akan disinkronkan ke database. Hibernate akan mencari perubahanya dan menyimpan perubahanya ke database.

· Menghapus Persistance Database

- Hamper sama dengan fungsi lainya, untuk menghapus persistence databse dengan Hibernate sangat sederhana. Method yang dipanggil adalah delete() dari object session.