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
;
}
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.
- Kemudian, pilih menu Help > Install New Software.
- Setelah itu, buka link berikut untuk memilih library JBoss yang sesuai dengan Eclipse Anda.
- Setelah Anda pilih, Catat url Addressnya. Dan masukkan ke dalam textfield Work with
yang di 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.
- Setelah instalasi selesai, Restart Eclipse Anda.
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 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.
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;
}
public
void
setNama(String nama)
{
this
.nama = nama;
}
public
String getNama()
{
return
nama;
}
@Override
public
String toString()
{
return
"ID : "
+id+
" Nama : "
+nama;
}
}
Keterangan :
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.
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.
- 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.
- Pilih project yang baru Anda buat tadi. Dan buat Hibernate Configuration File nya di direktori src.
- Klik kanan pada direktori src dan pilih New > Hibernate Configuration File(cfg.xml) atau 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.
- Kemudian, sesuaikan Hibernate Configuration File yang Anda buat sesuai dengan gambar berikut.
- Kemudian, pilih Finish.
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"
?>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
<
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.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
>
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)
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
- Pertama, klik kanan pada direktori src dan pilih Hibernate XML Mapping File(hbm.xml)
- Kemudian, pilih package yang tersedia yakni, org.jaco.hibernate.
- Dan pilih class yang tersedia yakni, class Users. Kemudian, pilih Finish.
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) {
// 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"
);
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(
"Riky"
);
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
: System.out.println(
"Pilihan tidak tersedia"
);
}
}
}
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 getAllUsers()
{
List list =
null
;
Session session =
new
Configuration().configure().buildSessionFactory().openSession();
try
{
session.beginTransaction();
Query query = session.createQuery(
"from org.jaco.hibernate.Users"
);
list = query.list();
return
list;
}
catch
(Exception e)
{
e.printStackTrace();
return
null
;
}
}
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"
);
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
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
;
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;
}
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"
?>
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
<
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.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
>
Users.hbm.xml
xml
version
=
"1.0"
?>
<
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"
);
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(
"Riky"
);
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();
// 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 getAllUsers()
{
List list =
null
;
Session session =
new
Configuration().configure().buildSessionFactory().openSession();
try
{
session.beginTransaction();
Query query = session.createQuery(
"from org.jaco.hibernate.Users"
);
list = query.list();
return
list;
}
catch
(Exception e)
{
e.printStackTrace();
return
null
;
}
}
}
Dan berikut ialah struktur direktori dari tutorial berikut.
Sekian untuk tutorial ini.
No comments:
Post a Comment