Hibernate dalam 10 menit


Hibernate adalah teknologi untuk menyimpan dan mengambil informasi (data) dari sebuah basis data (database), tanpa perlu memahami perintah2 SQL atau langsung tulis kode JDBC.

Langkah 1. Dapat semua yang perlu dulu

Mendapatkan MySQL dari mysql.com → downloads → MySQL Community Server → Windows ZIP/Setup.EXE (x86) → Pick a mirror → No thanks, just take me to the downloads → Japan [JMPA] HTTP → mysql-5.0.51b-win32.zip

Mendapatkan JDBC driver MySQL (perhubungan antara Java dan MySQL, disebut driver atau connector dalam bahasa inggris) dari mysql.com → downloads → Connectors → Connector/J → Source and Binaries (zip) → Pick a mirror → No thanks, just take me to the downloads → Japan [JMPA] HTTP → mysql-connector-java-5.1.6.zip

Mendapatkan Hibernate core dari hibernate.org → Download → Hibernate Core → Download → hibernate-3.2.6.ga.zip

Mendapatkan Hibernate annotations dari hibernate.org → Download → Hibernate Annotations → Download → hibernate-annotations-3.3.1.GA.zip

Langkah 2. Bangun struktur basis data

ΜySQL dapat diinstal dengan mudah. Habis proses instalasi kotak dialog konfigurasi akan muncul. Bagus kalau tulis di kertas sandi administrator (root password).

Supaya mulai MySQL pilih Start → Programs → MySQL → MySQL Server 5.0 → MySQL Command Line Client → dan masukan sandinya root.

Masukan perintah CREATE DATABASE buku;

Untuk memastikan masukan show databases; dan kemudian use buku;

Tolong tinggal jendela MySQL terbuka, karena nanti kita akan pakainya lagi.

Ternyata sudah bangun struktur paling dasar basis data ini. Hibernate nanti akan bangun tabel2 dengan cara otomatis!

Langkah 3. Kumpul semua jar

Bangun satu folder yang baru, misalnya C:/jars dan pindahkan di dalamnya:

  • hibernate3.jar yang ada di hibernate-3.2.6.ga.zip
  • semua yang ada di folder hibernate-3.2.6.ga.zip/lib
  • hibernate-annotations.jar yang ada di hibernate-annotations-3.3.1.GA.zip
  • hibernate-commons- annotations.jar dan ejb3-persistence.jar yang ada di hibernate-annotations-3.3.1.GA.zip/lib/
  • mysql-connector- java-5.1.6-bin.jar yang ada di dalam mysql-connector-java-5.1.6.zip

Langkah 4. Bangun proyek.

Buatlah sebuah proyek bernama Hibernate pakai Eclipse atau pakai IDE yang lain (NetBeans, JDeveloper dll).

Masukan di classpath proyek folder dengan semua jar yang tadi.

Kalau di Eclipse pilihlah Project → Properties → Java Build Path → Add External JARs…

Langkah 5. Tulis hibernate.cfg.xml

hibernate.cfg.xml ini sebuah file khusus dipakai Hibernate. Di dalamnya ada informasi tentang basis data yang mana kita pakai.

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
 "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
   <session-factory>
      <!-- Database connection settings -->
      <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
      <property name="connection.url">jdbc:mysql://localhost/buku</property>
      <property name="connection.username">root</property>
      <property name="connection.password">12345</property>

      <!-- SQL dialect -->
      <property name="dialect">org.hibernate.dialect.MySQLDialect</property>

      <property name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
      <property name="current_session_context_class">thread</property>

      <!-- Echo all executed SQL to stdout -->
      <property name="show_sql">true</property>
   </session-factory>
</hibernate-configuration>

Tolong lihat property2 bernama connection.* yang ada informasi yang tetap sama kita kalau langsung pakai JDBC. Coba ingat masukan sandi yang benar! (yang sudah masukan waktu menginstal MySQL)

Kalau di SQL dialect tertulis dengan jelas bahwa basis data kita pakai adalah MySQL.

Taruh hibernate.cfg.xml di dalam folder proyek, misalnya di C:/Eclipse/workspace/Hibernate. Yang penting, file ini dalam classpath.

Langkah 6. Membuat model

Aplikasi dasar ini tentang orang2. Buat setiap orang kita tertarik tentang namanya dan satu nomor yang unik.

class: Orang

keadaan: Long id, String nama

sifat: setId(), getId(), setNama(), getNama()

public class Orang {

	private Long id;
	private String nama;

	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNama() {
		return nama;
	}
	public void setNama(String nama) {
		this.nama = nama;
	}

}

Inilah sebuah java bean yang sederhana. Sebelum pakai Hibernate kita seharusnya 1. membuat tabel orang di basis data pakai SQL dan 2. membuat sebuah class dengan perintah2 JDBC insert(Orang orang), select(Long id), update(Orang orang), delete(Long id) dll. Untung keduanya ini bisa dilakukan oleh Hibernate sendiri, kita aja pakai beberapa annotations dari Java Persistence API.

import javax.persistence.*;

@Entity
public class Orang {

	private Long id;
	private String nama;

	@Id
	@GeneratedValue
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNama() {
		return nama;
	}
	public void setNama(String nama) {
		this.nama = nama;
	}

}

@Entity arti bahwa semua obyek yang dibuat dari class Orang bisa dinyimpan di basis data. Hibernate akan membuat tabel bernama orang dengan cara otomatis.

@id arti bahwa id adalah kunci utama (primary key) di basis data.

@GeneratedValue arti bahwa basis data akan secara otomatis isi idnya. (Kalau di MySQL inilah AUTO_INCREMENT)

Langkah 7. Sudah saatnya buat aksi

Membuat tabel di basis data:

	// perintah2 biasa
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Orang.class);
	config.configure();

	// membuat tabel di basis data
	new SchemaExport(config).create(true, true);

Pada perintah2 biasa class Orang ditambah config.addAnnotatedClass(Orang.class);. Kemudian konfigurasi yang dalam hibernate.cfg.xml dibaca barang2 sama class2 yang mempunyai syinal @Entity config.configure();.

Kalimat new SchemaExport(config).create(true, true); membuat tabel di basis data mulai dari nol. Kalau tabel ini sudah didefinisikan di basis data, kalimat ini akan hapus tabel dan semua datanya lalu membuat yang baru.

Untuk memastikan tulislah di command prompt MySQL show tables;.

Menyimpan sebuah obyek di basis data:

	// perintah2 biasa
	AnnotationConfiguration config = new AnnotationConfiguration();
	config.addAnnotatedClass(Orang.class);
	config.configure();

	// kita mau memasukan di basis data Presiden Susilo Bambang Yudoyono
	Orang orang = new Orang();
	orang.setNama("Presiden Susilo Bambang Yudoyono");

	// kalimat ini sangat mahal buat memori dan prosesor – 1 kali setiap aplikasi mulai
	SessionFactory factory = config.buildSessionFactory();
	// minta session
	Session session = factory.getCurrentSession();
	
	// menyimpan
	session.beginTransaction();
	session.save(orang);
	session.getTransaction().commit();

SessionFactory factory = config.buildSessionFactory(); sangat mahal. Maka obyek factory bagus kalau dibuat sekali aja sejak aplikasi hidup. (misalnya pakai cara singleton).

Untuk memastikan tetiklah di command prompt MySQL SELECT * FROM orang;.

Kalau kalimat2 yang biasa dimasukan di sebuah class yang mempunyai utility static yang tadi jadi aja:

	// kita mau menyimpan di basis data Presiden Susilo Bambang Yudoyono
	Orang orang = new Orang();
	orang.setNama("Presiden Susilo Bambang Yudoyono");
	DataBase.save(orang);

Kesimpulan: Kita membangun aplikasi lebih cepat karena kalau pakai Hibernate tidak perlu 1. membuat sendiri tabel2 di basis data pakai SQL 2. tulis class2 JDBC yang panjang dengan operasi paling terbiasa (cari, ubah, hapus, masuk).

3 Responses to Hibernate dalam 10 menit

  1. Ari Murti says:

    kok ‘habis proses’ si???? setelah prosesnya aja lebih bagus.

  2. ade says:

    Mas, saya buat yang kaya emas, tapi, say terus erorr pas di
    config.addAnnotatedClass(Orang.class);
    katanya “class not found…..”
    Gimana yah caranya?

  3. udin says:

    panduan dan langkah yg kurang jelas

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: