Berkenalan sekilas dengan Hibernate


Artikel ini merupakan salah satu sub bab dari buku Tugas Akhir saya yang dibuat pada paruh pertama tahun 2005.

Hibernate adalah salah satu teknologi object relational persistence mapping (ORM) dan query service. Transformasi persistent data dari sebuah representasi data (relational database) ke sebuah representasi data yang lain (java objects) ataupun sebaliknya adalah fungsi yang sebenarnya dilakukan oleh ORM.

Dalam aplikasi pemrograman yang berorientasi objek, persistence memperbolehkan sebuah objek untuk bisa tetap ada diluar proses aplikasi yang membuatnya (C. Bauer & Gavin King, Manning: Hibernate In Action). State dari objek tersebut disimpan pada datastore dan objek dengan state yang sama suatu saat dapat di buat kembali jika aplikasi dijalankan lagi.

Transient Object adalah object yang dibuat dimana state dari objek ini tidak disimpan pada datastore, sehingga tidak dapat dibuat kembali sebuah objek dengan state yang sama suatu saat. Masa hidup sebuah transient object terbatas pada proses yang membuatnya. Kebanyakan objek pada aplikasi terdiri dari gabungan persistent dan transient objek sehingga diperlukan sebuah sub-sistem yang menangani persistent objek

Domain model adalah representasi dari business entities yang digunakan dalam aplikasi java. Dalam arsitektur aplikasi yang terbagi menjadi beberapa layer, domain model digunakan untuk menjalankan business logic pada business layer (pada java bukan pada database). Business layer berhubungan dengan persistence layer untuk proses loading dan menyimpan persistent object dari domain model.

ORM adalah middleware pada persistence layer yang menangani persistent object. ORM bukan merupakan satu-satunya solusi permasalahan yang digunakan untuk menangani persistent object, cara lain yang bisa digunakan adalah dengan EJB atau langsung memakai SQL yang mengkopi nilai yang dari JDBC result set pada persistent object di domain model.

Hibernate ditulis dengan menggunakan bahasa pemrograman java meskipun saat ini juga dikembangkan untuk mendukung .NET framework. Persistent object dapat dibuat menggunakan hibernate dengan idiom bahasa pemrograman java termasuk didalamnya association, inheritance, polymorphism, composition, java collection framework seperti Set, List, Map. Hibernate adalah free software yang menggunakan lisensi LGPL.

Hibernate mendukung banyak DBMS (Database Management System) antara lain Oracle, DB2, MySQL, PostgreSQL, Sybase, SAP DB, HypersonicSQL, Microsoft SQL Server, Posgress, McKoi SQL, Pointbase dan Interbase. Hibernate dapat diintegrasikan dengan Framework-framework java yang lain seperti JBoss (hibernate sekarang merupakan bagian dari JBoss Project), Spring Framework, Struts, JSF maupun framework java yang lain sebagai persistence layer.

Object Oriented Query Language (OOQL) yang digunakan oleh hibernate mendefinisikan join table sebagai object property path. Selain itu OOQL mendukung fungsi dan operator SQL, fungsi aggregat seperti sum, avg, min, max, count. OOQL mendukung fungsi group by, having dan order by. Hibernate juga mendukung sub query (sub select pada database). Query yang dihasilkan oleh hibernate mengembalikan nilai berupa Objek atau nilai skalar
Hibernate memiliki beberapa interface Sekumpulan Application Programming Interface (API) yang digunakan oleh business layer yaitu:

  • Interface yang digunakan untuk melakukan operasi CRUD dan Query. Interface ini merupakan main point antara business logic dengan Hibernate. Interface tersebut adalah Session, Transaction dan Query.
  • Interface yang digunakan oleh aplikasi untuk melakukan konfigurasi Hibernate, yang paling penting adalah class Configuration
  • Callback Interface yang digunakan oleh aplikasi untuk event yang yang terjadi didalam Hibernate seperti Interceptor, Lifecycle, dan Validatable.
  • Interface yang merupakan implementasi mapping Hibernate seperti UserType, CompositeUserType, dan IdentifierGenerator
  • SessionFactory, factory untuk Session, client dari ConnectionProvider.
  • Session, class yang digunakan antara aplikasi dengan database. Session mengelola object untuk aplikasi. Session adalah wrapper dari sebuah koneksi JDBC
  • Persistent Object & Collections, object yang memiliki persistent state dan bisnis proses, bisa berupa JavaBean. Persistent Object & Collection selalu mempunyai 1 Session.
  • Transient Object & Collections, merupakan instance dari persistent class yang tidak terkait dengan Session. Transient Object & Collections bisa berupa object yang di buat oleh aplikasi yang di-persistent-kan. Atau obyek yang session telah di tutup (closed session).
  • Transaction, object yang digunakan oleh aplikasi untuk menspesifikasikan unit kerja yang atomic. Transaction adalah abstraksi dari JDBC, JTA atau CORBA Transaction. Sebuah Session dapat memiliki lebih dari 1 Transaction.
  • ConnectionProvider, yaitu abstraksi dari DataSource atau DriverManager. ConnectionProvider tidak di bisa diakses langsung oleh business layer.
  • TransactionFactory, factory untuk Transaction

Sebuah instance dari Datastore adalah representasi dari keseluruhan mapping antara objek-objek java ke database relasional. Mapping di compile dari berbagai file mapping yang berformat xml. Sebuah instance dari Datastore dapat dibuat dengan memanggil fungsi Hibernate.createDatastore().

To Be Continued……

6 thoughts on “Berkenalan sekilas dengan Hibernate

  1. Ping-balik: Tips Pernikahan « My Life’s Experiences

  2. Ping-balik: Persistence Layer dengan Hibernate « About Hibernate

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s