Hibernate (1) : Pengantar ORM

Oleh : Reza Ervani

بسم الله الرحمن الرحيم

Apa itu JDBC ?

JDBC adalah kependekan dari Java Database Connectivity. Menyediakan serangkaian API Java untuk mengakses relational database dari program Java. API Java ini memperkenankan program Java untuk mengeksekusi pernyataan SQL dan berinteraksi dengan database SQL apa saja yang sesuai.

JDBC menyediakan sebuah arsitektur yang fleksibel untuk menulis suatu aplikasi database independen yang dapat menjalankan platform yang berbeda dan berinteraksi dengan DBMS yang berbeda tanpa modifikasi apapun.

Pro dan Kontra JDBC

Pro Kontra
  • Pemrosesan SQL yang bersih dan sederhana
  • Performa yang bagus saat bekerja dengan data yang besar
  • Sangat bagus untuk aplikasi-aplikasi kecil
  • Sintak sangat sederhana dan mudah dipelajari
  • Kompleks jika digunakan dalam proyek yang besar
  • Overhead jika digunakan dalam pemrogramman besar
  • Tidak ada enkapsulisasi
  • Sulit diterapkan di konsep MVC
  • Query bersifat spesifik DBMS

Mengapa menggunakan Object Relational Mapping (ORM) ?

Saat kita bekerja dengan suatu sistem berorientasi objek, ada suatu ketidakcocokan antara model objek dan relational database. RDBMS menampilkan data dalam suatu format tabular, sementara bahasa berorientasi objek, seperti java atau C# menampilkannya dalam suatu grafik keterhubungan objek. Anggap kita memiliki Class Java dengan konstruktor dan fungsi publik terkait seperti berikut :


public class Employee {
   private int id;
   private String first_name;
   private String last_name;
   private int salary;  

   public Employee() {}
   public Employee(String fname, String lname, int salary) {
      this.first_name = fname;
      this.last_name = lname;
      this.salary = salary;
   }
   public int getId() {
      return id;
   }
   public String getFirstName() {
      return first_name;
   }
   public String getLastName() {
      return last_name;
   }
   public int getSalary() {
      return salary;
   }
}

Anggap bahwa objek diatas perlu disimpan dan diterima kedalam suatu tabel RDBMS berikut :

create table EMPLOYEE (
   id INT NOT NULL auto_increment,
   first_name VARCHAR(20)default NULL,
   last_name  VARCHAR(20)default NULL,
   salary     INT  default NULL,
   PRIMARY KEY (id));

Masalah pertama, bagaimana jika kita ingin memodifikasi desain database kita setelah mengembangkan beberapa halaman aplikasi ? Yang kedua, memuat dan menyimpan objek dalam suatu relational database memberikan lima masalah ketidakcocokan sebagai berikut :

Ketidakcocokan Deskripsi
Granularity Terkadang kita akan memiliki sebuah model objek yang memiliki class lebih banyak daripada jumlah tabel yang berhubungan dalam suatu database.
Inheritance RDBMS tidak mendefinisikan apapun yang sama dengan inheritance yang merupakan paradigma alami dalam bahasa pemrogramman berorientasi objek.
Identity Suatu RDBMS mendefinisikan hanya satu catatan “kesamaan”, yakni primary key. Sementara Java, mendefinisikan baik identitas objek (a==b) maupun kesamaan objek (a.equals(b))
Associations Bahasa berorientasi objek menampilkan asosiasi menggunakan referensi objek, sementara RDBMS menampilkan suatu asosiasi sebagai suatu kolom foreign key.
Navigation Cara kita mengakses objek di Java dan di suatu RDBMS secara fundamental berbeda.

Untuk itu Object-Relational Mapping (ORM) adalah solusi untuk menangani semua ketidakcocokan diatas.

Apa itu ORM ?

ORM adalah kependekan dari  Object-Relational Mapping (ORM) adalah sebuah teknik pemrogramming untuk mengkonversi data antara relational database dan bahasa pemrogramman berorientasi objek seperti Java, C#. Sistem ORM memiliki keuntungan dibandingkan plain JDBC :

Nomor Keuntungan
1 Biarkan kode bisnis hanya mengakses objek bukan tabel database
2 Menyembunyikan detail query SQL dari logika OO
3 Berbasis pada JDBC ‘under the hood’
4 Tidak perlu berurusan dengan implementasi database
5 Entitas berbasis pada konsep bisnis bukan pada struktur database
6 Manajemen transaksi dan pembuatan key secara otomatis
7 Pengembangan aplikasi yang cepat

Solusi ORM berisi empat entitas berikut ini :

Nomor Solusi
1 Sebuah API melakukan operasi CRUD dasar pada objek class-class yang persisten.
2 Sebuah bahasa atau API menspesifikasikan query yang merujuk pada class-class dan properti dari class-class
3 Fasilitas yang dapat dikonfigurasi untuk menspesifikasikan metadata mapping
4 Suatu teknik untuk berinteraksi dengan objek transaksional guna melakukan dirty checking, lazy association fetching, dan fungsi-fungsi optimasi lainnya.

 

Java ORM Frameworks:

Ada beberapa opsi framework persisten dan ORM di Java. Sebuah framework persisten adalah layanan ORM yang menyimpan dan menerima objek kedalam suatu database relational

  • Enterprise JavaBeans Entity Beans
  • Java Data Objects
  • Castor
  • TopLink
  • Spring DAO
  • Hibernate
  • Dan banyak lagi

Kita akan membahas salah satunya adalah Hibernate.

About Reza Ervani 430 Articles
Adalah pendiri programming.rezaervani.com -

Be the first to comment

Leave a Reply

Your email address will not be published.


*


This site uses Akismet to reduce spam. Learn how your comment data is processed.