• Tidak ada hasil yang ditemukan

CRUD Hibernate Java. Oleh: Yudi Setiawan

N/A
N/A
Protected

Academic year: 2021

Membagikan "CRUD Hibernate Java. Oleh: Yudi Setiawan"

Copied!
19
0
0

Teks penuh

(1)
(2)

CRUD Hibernate Java

Oleh: Yudi Setiawan

Pada tutorial ini, saya akan menjelaskan contoh CRUD(Create, Read,

Update dan Delete) di Hibernate Java. Sebenarnya apa itu Hibernate? Kalau

menurut saya Hibernate itu ialah Framework yang bersifat ORM(Object

Relation Mapping) untuk melakukan koneksi ke Database. Apa cuma untuk

koneksi ke Database ...

Pada tutorial ini, saya akan menjelaskan contoh CRUD(Create, Read, Update dan Delete) di Hibernate Java. Sebenarnya apa itu Hibernate? Kalau menurut saya Hibernate itu ialah Framework yang bersifat ORM(Object Relational Mapping) untuk melakukan koneksi ke Database. "Apa cuma untuk koneksi ke Database saja?" tidak. Anda bisa melakukan semua operasi SQL lainnya. Dengan kata lain, bisa Anda katakan bahwa Hibernate bisa menggantikan operasi JDBC. Untuk mempermudah pemahaman Anda, berikut contoh untuk melakukan koneksi Database.

JDBC (Tanpa Hibernate) try { Class.forName(driver); Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/"+nama_database, user, pass); return conn; }catch(ClassNotFoundException nfe) { nfe.printStackTrace(); return null; }catch(SQLException se) { se.printStackTrace(); return null; }

(3)

Session s = new Configuration().configure().buildSessionFactory().openSession(); if(s == null) System.out.println("Koneksi Gagal"); else System.out.println("Koneksi Berhasil");

Gimana? bisa Anda lihat bahwa dengan menggunakan Hibernate Anda tidak perlu mendeklarasikan semua field Database-nya.

OK, untuk kelebihan dan kekurangan Hibernate itu tidak akan saya jelaskan di sini. Di Internet, sudah banyak yang membahasnya. Pada tutorial ini, saya beranggapan bahwa pembaca sudah menguasai JDBC sehingga pembaca tidak sulit untuk memahami penjelasan syntax - syntax yang ada.

INSTALL HIBERNATE

Untuk bagian tahap instalasi, di sini saya menggunakan IDE Eclipse J2EE Juno. Untuk Anda yang menggunakan IDE yang berbeda dengan saya bisa cari tutorialnya sendiri tentang cara instalasinya. OK, untuk instalasinya silakan ikuti langkah berikut :

Buka Eclipse Anda. 1.

Kemudian, pilih menu Help > Install New Software. 2.

Setelah itu, buka link berikut untuk memilih library JBoss yang sesuai dengan Eclipse Anda. 3.

Setelah Anda pilih, Catat url Addressnya. Dan masukkan ke dalam textfield Work with yang di 4.

Eclipse tadi. Dan ketik "hibernate" di kolom pencarian. Karena, di JBoss yang ingin Anda install hanyalah Hibernate saja.

Setelah itu pilih Next sampai tahap instalasi selesai. 5.

Setelah instalasi selesai, Restart Eclipse Anda. 6.

MEMBUAT DATABASE

Sebelum memulai coding, ada beberapa hal yang harus kita buat terlebih dahulu. Yakni, Database dengan nama "perpustakaan" dan tabel dengan nama "users" dan berikut field - field untuk table

(4)

users.

Setelah Anda buat Database dengan tabelnya maka, langkah berikutnya ialah mulai membuat Coding CRUD Hibernate di Java.

INISIALISASI AWAL

Langkah pertama, dalam membuat CRUD di Hibernate Java ialah membuat project baru dengan nama "JagoCoding - Belajar Hibernate". Setelah buat project, kemudian buat file class baru dengan nama "Users" dan package "org.jaco.hibernate".

Oya, jangan lupa import library yang dibutuhkan untuk Hibernate. Berikut ialah beberapa library yang saya import.

(5)

Nah, Setelah itu, isi coding berikut kedalam file class "Users" package org.jaco.hibernate; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "users") public class Users {

@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id")

int id;

@Column(name = "nama") String nama;

// Getter dan Setter public void setID(int id) {

this.id = id; }

public int getID() {

return id; }

(6)

{

this.nama = nama; }

public String getNama() {

return nama; }

@Override

public String toString() {

return "ID : "+id+" Nama : "+nama; }

}

Keterangan :

Maksud dari @ atau disebut Anotasi merupakan cara menghubungkan antara file xml dengan java.

@Id berfungsi untuk menyatakan bahwa variable tersebut sebagai field primary key di Table

Database

@GenerationType berfungsi untuk menyatakan bahwa field primary key dibuat dengan cara

Auto_Increment

@Column berfungsi untuk menyatakan bahwa ini merupakan field yang dituju pada column yang

ada di table.

Setelah itu, buat file konfigurasi Hibernate(Hibernate Configuration File). Caranya ialah sebagai berikut:

Pilih project yang baru Anda buat tadi. Dan buat Hibernate Configuration File nya di direktori src. 1.

Klik kanan pada direktori src dan pilih New > Hibernate Configuration File(cfg.xml) atau 2.

bisa juga dengan cara tekan tombol Ctrl + N dan pilih Hibernate > Hibernate Configuration

File(cfg.xml)

Setelah itu biarkan saja nama file tetap "hibernate.cfg.xml" dan Next. 3.

Kemudian, sesuaikan Hibernate Configuration File yang Anda buat sesuai dengan gambar berikut. 4.

(7)

Kemudian, pilih Finish. 5.

Setelah itu, buka file hibernate.cfg.xml yang barusan Anda buat tadi dan pilih tab Source dibagian bawah. dan kemudian ubah isi file nya menjadi 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> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">password_database_anda</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/nama_database< /property> <property name="hibernate.connection.username">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <mapping class="org.jaco.hibernate.Users" />

(8)

</session-factory> </hibernate-configuration>

Sekarang, buat 1 file xml lagi untuk Hibernate XML Mapping File(hbm.xml). Caranya, hampir sama seperti buat Hibernate Configuration File namun, pilih yang Hibernate XML Mapping

File(hbm.xml)

Pertama, klik kanan pada direktori src dan pilih Hibernate XML Mapping File(hbm.xml) 1.

Kemudian, pilih package yang tersedia yakni, org.jaco.hibernate. 2.

Dan pilih class yang tersedia yakni, class Users. Kemudian, pilih Finish. 3.

(9)

Setelah itu, buat 1 file class yakni class Main dan letakkan di package yang sama dengan class

Users. Setelah itu ikuti langkah - langkah berikut secara bertahap untuk memulai coding CRUD di

Hibernate.

CREATE(INSERT)

Untuk Create, masukkan coding berikut ke dalam class Main package org.jaco.hibernate;

import java.util.Scanner; import org.hibernate.Session;

import org.hibernate.cfg.Configuration; public class Main {

public static void main(String[] args) {

(10)

Session s = new

Configuration().configure().buildSessionFactory().openSession(); // Buat Objek dari class Users

Users user = new Users();

// Pilih jenis operasi CRUD

System.out.println("Pilih Operasi 1CRUD"); System.out.println("1. Create");

System.out.println("2. Read"); System.out.println("3. Update"); System.out.println("4. Delete");

System.out.print("Pilihan : "); int pilih = new Scanner(System.in).nextInt();

switch(pilih) {

case 1 : // Create(Insert SQL) // set nilai untuk objek user

// user.setID(null) nggak perlu dibuat karena, Auto_Increment

user.setNama("Yudi"); try { // Mulai Koneksi s.beginTransaction(); // Simpan Objek User ke Session

s.save(user); // execute Session ke MySQL s.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); } break; default :

(11)

} }

}

Kemudian, jalankan file Main.class. Jika output seperti berikut berarti, Anda berhasil melakukan Koneksi Database dan Insert Query. Dan coba cek di tabel database apakah eksekusi query berhasil atau tidak.

READ(SELECT)

Untuk Read, tambahkan coding berikut ke dalam file Main.class. case 2 : // Read(Select SQL) s.beginTransaction(); for(Users us :getAllUsers()) { System.out.println(us); } break; Dan method berikut.

// Method untuk select all from table public static List<Users> getAllUsers() {

List<Users> list = null; Session session = new

Configuration().configure().buildSessionFactory().openSession(); try

(12)

{

session.beginTransaction();

Query query = session.createQuery("from org.jaco.hibernate.Users"); list = query.list(); return list; }catch(Exception e) { e.printStackTrace(); return null; } }

Jalankan file Main.class dan input 2.

Jika outputnya, seperti diatas maka, coding Anda berhasil.

UPDATE

Untuk update, tambahkan coding berikut ke dalam file Main.class. case 3 : // Update(Update SQL)

s.beginTransaction(); // Set Query SQL

Query query = s.createQuery("update

org.jaco.hibernate.Users set nama = :nama where id = :id"); query.setParameter("nama", "Setiawan");

(13)

query.setParameter("id", 1); int exec = query.executeUpdate(); s.getTransaction().commit(); break;

Jalankan file Main.class, input 3 dan cek Outputnya. Dan cek juga hasilnya di table database.

DELETE(DELETE SQL)

Untuk yang terakhir Delete, tambahkan coding berikut ke dalam file Main.class case 4 : // Delete(Delete SQL)

s.beginTransaction(); // Set Query SQL

query = s.createQuery("delete from org.jaco.hibernate.Users where id = :id");

query.setParameter("id", 1); exec = query.executeUpdate(); s.getTransaction().commit(); break;

Jalankan file Main.class, input 4 dan lihat outputnya. Dan jangan lupa cek di tabel database apakah record berhasil dihapus.

(14)

Dan berikut ialah source code lengkap dari tiap file - file yang ada di tutorial ini. Users.class package org.jaco.hibernate; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name = "users") public class Users {

@Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "id")

int id;

@Column(name = "nama") String nama;

// Getter dan Setter public void setID(int id) {

this.id = id; }

(15)

public int getID() {

return id; }

public void setNama(String nama) {

this.nama = nama; }

public String getNama() {

return nama; }

@Override

public String toString() {

return "ID : "+id+" Nama : "+nama; }

}

hibernate.cfg.xml

<?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> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.password">nasigoreng</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/perpustakaan</ property> <property name="hibernate.connection.username">root</property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <mapping class="org.jaco.hibernate.Users" /> </session-factory> </hibernate-configuration>

(16)

Users.hbm.xml

<?xml version="1.0"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!-- Generated Oct 17, 2015 6:42:35 PM by Hibernate Tools 3.4.0.CR1 --> <hibernate-mapping>

<class name="org.jaco.hibernate.Users" table="USERS"> <id name="id" type="int" access="field">

<column name="ID" />

<generator class="assigned" /> </id>

<property name="nama" type="java.lang.String"> <column name="NAMA" /> </property> </class> </hibernate-mapping> Main.class package org.jaco.hibernate; import java.util.List; import java.util.Scanner; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.cfg.Configuration; public class Main

{

public static void main(String[] args) {

// Buat Session untuk Koneksi Database Session s = new

Configuration().configure().buildSessionFactory().openSession(); // Buat Objek dari class Users

Users user = new Users();

// Pilih jenis operasi CRUD

System.out.println("Pilih Operasi 1CRUD"); System.out.println("1. Create");

(17)

System.out.println("3. Update"); System.out.println("4. Delete");

System.out.print("Pilihan : "); int pilih = new Scanner(System.in).nextInt();

switch(pilih) {

case 1 : // Create(Insert SQL) // set nilai untuk objek user

// user.setID(null) nggak perlu dibuat karena, Auto_Increment

user.setNama("Yudi"); try { // Mulai Koneksi s.beginTransaction(); // Simpan Objek User ke Session

s.save(user); // execute Session ke MySQL s.getTransaction().commit(); }catch(Exception e) { e.printStackTrace(); } break; case 2 : // Read(Select SQL) s.beginTransaction(); for(Users us :getAllUsers()) { System.out.println(us); } break; case 3 : // Update(Update SQL) s.beginTransaction();

(18)

// Set Query SQL Query query =

s.createQuery("update org.jaco.hibernate.Users set nama = :nama where id = :id"); query.setParameter("nama", "Setiawan"); query.setParameter("id", 1); int exec = query.executeUpdate(); s.getTransaction().commit(); break; case 4 : // Delete(Delete SQL) s.beginTransaction(); // Set Query SQL query =

s.createQuery("delete from org.jaco.hibernate.Users where id = :id"); query.setParameter("id", 1); exec = query.executeUpdate(); s.getTransaction().commit(); break; default : System.out.println("Pilihan tidak tersedia"); }

}

// Method untuk select all from table public static List<Users> getAllUsers() {

List<Users> list = null; Session session = new

Configuration().configure().buildSessionFactory().openSession(); try

{

session.beginTransaction();

Query query = session.createQuery("from org.jaco.hibernate.Users");

(19)

return list; }catch(Exception e) { e.printStackTrace(); return null; } } }

Dan berikut ialah struktur direktori dari tutorial berikut.

Sekian untuk tutorial ini.

Tentang Penulis

Yudi Setiawan

Saat ini aktif sebagai Mahasiswa di salah satu Universitas di kota Medan dengan mengambil bidang Fakultas Teknik dan Ilmu Komputer. Sangat senang dengan bahasa pemrograman Java dan Android.

Referensi

Dokumen terkait

Papilitis adalah pembengkakan diskus yang disebabkan oleh peradangan lokal di nervus saraf optik dan dapat terlihat dengan pemeriksaan funduskopi.. Tipe lokal di

Setelah dilakukan pencatatan tinggi badan dan berat badan, dilakukanlah pemeriksaan fisik secara umum yang kemudian dilanjutkan pemeriksaan fisik khusus untuk

Disusun berikutnya gerakan pembaharuan di Asia khususnya di India dan Pakistan, diantara tokoh-tokohnya seperti Sir Ahmad Khan (lahir 1817 M), Syeh Amir ‘Ali Jinnah

Berdasarkan hasil penelitian yang telah dilakukan pada Universitas Bina Darma Beasiswa Bidik Misi, maka didapatkan hasil akhir sebuah sistem yaitu Sistem pendukung

Untuk itu data tampang lin- tang di ruas kanan persamaan (3) harus terse- dia dalam bentuk tabulasi sebagai fungsi energi, yang dapat diinterpolasikan secara linier. Kare- na

Serbuk koproses PPS-MC (4:1) memiliki ukuran yang lebih besar dari serbuk koproses lainnya dan memiliki morfologi yang agak lebih mirip PPS dengan serpihan berukuran agak

Pada tahun 1881 Frederich Bezold (1824-1908) melaporkan adanya pus yang keluar dari sisi medial prosesus mastoid yang terinfeksi dan membentuk abses jaringan leher dalam,

Berdasarkan uraian yang telah dijelaskan sebelumnya, maka dapat disimpulkan bahwa bahan ajar berupa buku siswa menggunakan konteks bahan bakar minyak dengan pendekatan