Users  

   

Hobi  

   

Statistik  

Visitors
215
Articles
59
Articles View Hits
384905
   

User Online  

We have 28 guests and no members online

   

aplikasi CRUD sederhana menggunakan framework hibernate

Details

Pada artikel ini akan membahas tentang dasar membuat proses Create, Read, Update dan Delete menggunakan Hibernate sebagai Framework dan Netbean sebagai IDE-nya, biasanya configurasii Hibernate selalu tidak pernah lepas dengan configurasi Spring, tapi pada kesempatan ini saya akan menguraikan tentang Hibernate tanpa Spring, dengan tujuan jika ingin membuat aplikasi desktop maka configurasi Spring tidak diperlukan.

Sebelum memulai ada baiknya kita mengetahui class-library apa saja yang diperlukan untuk membangun aplikasi jika akan menggunakan Hibernate Annotations.

Pertama yang perlu dipersiapkan adalah database nya, saya disini menggunakan database MySql, buat sebuah database bernama "coba", database ini yang nantinya akan digunakan untuk menyimpan data kita.

Sekarang bagaimana caranya memasukan library – library tersebut kedalam project properties yang akan kita buat? Cukup kita ikuti langkah – langkahnya sebagai berikut; dari Toolbar pilih Tools diklik, terus akan keluar dropdown menu, kemudian pilih Libraries maka akan keluar window box dengan title ”Library Manager”, kemudian tekan tombol “New Library…”, maka akan keluar lagi window box dengan title “New Library”, isikan kata Hibernate pada textbox Library Name, terus pilih “Class Libraries” combobox Library Type, kemudian tekan OK, setelah itu pilih file jar library hibernate seperti yang telah tertera diatas ke folder yang telah kita tentukan sebelumnya dengan cara tekan tombol “Add Jar/Folder…” pada tab “Classpath”, seperti gambar berikut :

Setelah itu tekan tombol “OK”, sekarang pembahasan akan dilanjutkan dengan membuat project baru dalam IDE Netbean. Setelah membuat project baru, baik itu web project atau desktop project.

Setelah seluruh library yang diperlukan disiapkan dalam folder library, sekarang waktunya membahas membuat CRUD menggunakan Hibernate, sebelum mulai coding dengan java class perlu kita ketahui terlebih dahulu basic konfigurasi yang wajib dipenuhi, supaya Hibernate dapat berfungsi dengan baik, konfigurasi ini melibatkan file xml yang akan diletakkan di folder root dari folder “Source Packages”, file ini harus diberi nama “hibernate.cfg.xml” dan isi dari file tersebut akan seperti berikut:

 

<?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:3306/coba</property>
        <property name="connection.username">root</property>
        <property name="connection.password"></property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
        <!-- Enable Hibernate's automatic session context management -->
        <property name="current_session_context_class">thread</property>
        <!-- Disable the second-level cache -->
        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>
        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">update</property>

        <mapping class="xxx.TabelMahasiswa"/>
    </session-factory>
</hibernate-configuration>

 

Dari source xml konfigurasi diatas terdapat beberapa properties yang harus ada untuk membangun aplikasi berbasis framework hibernate, berikut daftar beserta keterangan dari properties diatas, untuk lebih lengkapnya dapat dilihat pada link berikut:

 

http://www.hibernate.org/hib_docs/reference/en/html/session-configuration.html

 

 

- connection.driver.class,  property  ini  digunakan sebagai penentu driver database apa yang akan digunakan untuk tersambung ke database.

 

-connection.url, property ini digunakan untuk menentukan tujuan url database yang akan terpakai sebagai connection terhadap database.

 

-connection.username,  property  user  name  yang dipakai untuk mengakses database.

 

- connection.password,   property    password   yang    dipakai    untuk mengakses database.

 

- connection.pool.size, property yang digunakan sebagai batasan berapa koneksi maksimum yang boleh digunakan untuk tersambung ke database.

 

- dialect,  property  yang menentukan jenis dialect yang akan digunakan, disesuaikan dengan jenis database yang dipakai.

 

-current_session_context_class,  property  yang  digunakan  untuk memperlakukan session context, pilihan properties-nya berupa; jta | thread | managed | custom.Class.

 

- cache.provider_class, property untuk menentukan class yang digunakan untuk custom CacheProvide.

 

-show_sql, property untuk memperlihat perintah sql yang di eksekusi pilihannya bisa true atau false

 

-hbm2ddl.auto, property untuk otomasi validasi atau export schema terhadap database disaat SessionFactory dibuat, atau dengan property create-drop schema akan langsung di drop ketika SessionFactory ditutup. Adapun property diatas menggunakan update berarti akan menggenerate tabel secara otomatis jika tabel tidak tersedia, tapi jika tabel tersedia, hanya akan dirubah saja jika ada perubahan

 

Sedangkan untuk baris kode “<mapping class=”xxx.TabelMahasiswa”/>” merupakan perintah untuk mapping suatu class Model Annotation supaya dapat terbaca oleh file hibernate.cfg.xml, jumlah mapping ini akan banyak atau sedikit tergantung dari banyaknya class Model yang dibuat untuk menunjang aplikasi yang hendak dibangun tersebut.

 

Setelah selesai dengan konfigurasi sekarang waktunya membuat class Model yang mewakili sebuah tabel pada database. Sebagai contoh kita akan membuat class “TabelMahasiswa” yang akan disimpan dalam package “xxx”, berikut kode-nya:

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "tbl_mahasiswa")
public class TabelSiswa implements Serializable{
    @Id
    @GeneratedValue
    private int id;
  
    @Column(name="no_induk", nullable=false,length=10)
    private String nomorInduk;
  
    @Column(name="nama", nullable=false,length=30)
    private String nama;
  
    @Column(name="alamat", nullable=false,length=45)
    private String alamat;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getNomorInduk() {
        return nomorInduk;
    }

    public void setNomorInduk(String nomorInduk) {
        this.nomorInduk = nomorInduk;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    public String getAlamat() {
        return alamat;
    }

    public void setAlamat(String alamat) {
        this.alamat = alamat;
    }
}

Kode diatas mewakili sebuah table dalam database MySQL yang bernama “tbl_mahasiswa” dengan nama field yang tertera dalam properties @Column diatas, jadi disini kita tidak perlu membuat tabel lagi didatabase,dari source kode “TabelMahasiswa” diatas dapat kita lihat beberapa syntax code yang diawali dengan tanda “@”, inilah yang disebut Annotations sekilas akan dijelas arti dari masing – masing perintah diatas sebagai berikut, namun untuk lebih jelasnya dapat dilihat pada link berikut http://www.hibernate.org/hib_docs/annotations/reference/en/html/entity.html (this link written in English, so please read it carefully):

 

-@Entity, berfungsi untuk mendefinisikan sebuah class Model adalah sebuah Entity bean yang dihubungkan dengan POJO persistence.

 

-@Table, berfungsi untuk menghubungkan suatu class Entity terhadap sebuah table dalam sebuah schema database.

 

-@Id, berfungsi untuk mendefinisikan salah satu propery field dari entity bean yang akan berperan sebagai identifier.

 

-@GeneratedValue, berfungsi untuk mendefinisikan type generator yang digunakan untuk memperoleh nilai dari identifier @Id.

 

-@Column, berfungsi sebagai property field mapping terhadap field yang berada di table di database.

 

Kemudian buatlah file java class yang diberi nama HibernateUtility.java yang digunakan sebagai Session Factory, yang menghubungkan suatu proses transaction yang dibuat secara programmatic dengan system konfigurasi hibernate yang telah ditentukan sebelumnya. Adapun source kode dari HibernateUtility akan seperti berikut:


import org.hibernate.SessionFactory; import org.hibernate.cfg.AnnotationConfiguration; public class HibernateUtil { private static final SessionFactory sessionFactory; static{ try{ sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory(); }catch(Throwable th){ System.err.println("Initial SessionFactory creation failed"+th); throw new ExceptionInInitializerError(th); } } public static SessionFactory getSessionFactory(){ return sessionFactory; } }

Setelah selesai membuat HibernateUtility.java sekarang mulai membahas pada proses Create, Read, Update dan Delete, yang akan disimpan dalam package “xxx.client” berikut source kode “CreateData.java” yang berisi contoh perintah untuk menginsert data:

import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import xxx.HibernateUtil; import xxx.TabelMahasiswa; public class CreateData { public static void main(String[] args) throws Exception { SessionFactory sessFact = HibernateUtil.getSessionFactory(); Session sess = sessFact.getCurrentSession(); Transaction tr = sess.beginTransaction(); TabelMahasiswa stu = new Tabelmahasiswa(); stu.setNama("Renna"); stu.setNomorInduk("123456"); stu.setAlamat("Jl. Sukajadi No. 10"); sess.save(stu); tr.commit(); System.out.println("Successfully inserted"); sessFact.close(); } }

Membahas apa yang tertulis pada source kode pada baris pertama sampai ketiga dalam method “main” tertulis perintah untuk inisialisasi Session Hibernate dan Transaction, kemudian dilanjutkan dengan inisialisasi “TabelMahasiswa” yang menghubungkan langsung dengan tabel “tabel_mahasiswa” di database, dengan mengisikan nilai variable terhadapa method – method “set” kemudian dimasukan ke method “save” yang berada di bawah inisialisasi Session, hal tersebut sudah merupakan proses “insert into” terhadap tabel di database. Kemudian perintah di tutup dengan perintah “commit” untuk eksekusi insert data terhadap tabel dan perintah “close” untuk mengakhiri inisialisasi Session. Dilanjutkan dengan “ReadData.java” berikut source kode-nya:


import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import xxx.HibernateUtil; import xxx.TabelMahasiswa; public class ReadData { public static void main(String[] args) throws Exception { SessionFactory sessFact = HibernateUtil.getSessionFactory(); Session sess = sessFact.getCurrentSession(); Transaction tr = sess.beginTransaction(); Query query = sess.createQuery("from TabelMahasiswa"); List result = query.list(); Iterator it = result.iterator(); System.out.println("id sname sroll scourse"); while(it.hasNext()){ TabelMahasiswa st = (TabelMahasiswa)it.next(); System.out.print(st.getId()); System.out.print(" "+st.getNomorInduk()); System.out.print(" "+st.getNama()); System.out.print(" "+st.getAlamat()); System.out.println(); } sessFact.close(); } }


Sedikit berbeda dengan source kode sebelumnya, perintah diatas adalah untuk menampilkan data dari tabel atau sama dengan perintah “select” pada query, tetapi jika menggunakan Hibernate cukup dengan perintah “createQuery” dan sebutkan nama instant mapping tabel tersebut sudah cukup untuk mengambil data, kebutuhan pengambilan data dapat di rubah where clause-nya sesuai kebutuhan. Selain itu juga diperlukan class List dan Iterator untuk mengurai class yang ter-enkapsulasi menjadi object – object yang terkecil. Dilanjutkan dengan “UpdateData.java” berikut source kode-nya:

import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import xxx.HibernateUtil; import xxx.TabelMahasiswa; public class UpdateData { public static void main(String[] args) throws Exception{ SessionFactory sessFact = HibernateUtil.getSessionFactory(); Session sess = sessFact.getCurrentSession(); Transaction tr = sess.beginTransaction(); TabelMahasiswa st = (TabelMahasiswa)sess.load(TabelMahasiswa.class,4); st.setAlamat("Jl. Lodaya No. 125"); tr.commit(); System.out.println("Update Successfully"); sessFact.close(); } }

Untuk source kode UpdateData proses yang terjadi tidak jauh berbeda dengan yang terjadi pada proses CreateData, hal kecil yang membedakan hanya pada baris “TabelMahasiswa st = (TabelMahasiswa)sess.load(TabelMahasiswa.class,4);” yang digunakan untuk mengambil data yang akan diedit ke database dengan entity model “TabelMahasiswa” kemudian lakukan perubahan, setelah itu lakukan commit. Dan yang terakhir adalah proses delete yang disimpan dalam file “DeleteData.java” yang source codenya sebagai berikut:

import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import xxx.HibernateUtil; import xxx.TabelMahasiswa; public class DeleteData { public static void main(String[] args) throws Exception{ // TODO Auto-generated method stub SessionFactory sessFact = HibernateUtil.getSessionFactory(); Session sess = sessFact.getCurrentSession(); Transaction tr = sess.beginTransaction(); TabelMahasiswa st = (TabelMahasiswa)sess.load(TabelMahasiswa.class,4); sess.delete(st); System.out.println("Deleted Successfully"); tr.commit(); sessFact.close(); } }

Untuk source kode DeleteData proses yang terjadi tidak jauh berbeda dengan yang terjadi pada proses UpdateData, hal kecil yang membedakan hanya pada baris “sess.delete(st);” yang digunakan untuk mengambil data yang akan dihapus dari database dengan entity model “TabelMahasiswa”, setelah itu lakukan commit.

 

Okeh dech selamat mencoba! Mungkin saat ini hanya sekian ilmu yang bisa dibagi dengan pembaca, silahkan disimak, dipelajari, dishare DAN semoga bermanfaat, jika ada kekurangan atau masukan yang dapat meningkatkan kemampuan jangan sungkan untuk memberikan komentar....

written by : mee

Comments   

 
0 #1 Wiley 2014-05-11 21:44
I'm really impressed with your writing skills and also with
the layout on your weblog. Is this a paid theme or did you customize it
yourself? Either way keep up the nice quality writing, it
is rare to see a great blog like this one nowadays.

Here is my page - jasa seo jepara: http://www.maxiwebdesign.com/services/jasa-seo/
Quote
 

Add comment


Security code
Refresh

   

Indeks  

   
© ALLROUNDER