Dalam artikel kali ini saya akan membahas tentang bagaimana caranya melakukan proses manipulasi ke database. Sebaiknya sebelum kamu membaca artikel ini, kamu sudah membaca artikel seri sebelumnya yaitu :
- [Java] Integrasi Spring + Hibernate Framework (Part 1)
- [Java] Integrasi Spring + Hibernate Framework (Part 2)
Seperti yang sudah saya bilang di artikel bagian pertama, bagian UI dari program yang saya buat ada di dalam package com.kusandriadi.mahasiswa.main, kurang lebih program kita akan mempunyai tampilan seperti ini :
Di bagian kanan ada table dengan 2 column, saya membuat table model dari table tersebut di dalam package com.kusandriadi.mahasiswa.tablemodel, nantinya, pembuatan table model tersendiri di dalam program akan memudahkan kita dalam proses meng-update isi table jika ada perubahan data.
Agar table kita auto-update, di dalam MahasiswaDaoInject, kita akan membuat method seperti ini :
@Override
@Transactional(readOnly=true)
public ArrayList<Mahasiswa> selectAll() {
try {
return (ArrayList<Mahasiswa>) getHibernateTemplate().loadAll(Mahasiswa.class);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}getHibernateTemplate().loadAll(Mahasiswa.class) akan membaca semua data dari Table Mahasiswa, method loadAll bernilai Mahasiswa.class karena dalam class tersebut merepresentasikan 1 table dalam database, yaitu Table Mahasiswa. Setelah itu kita tinggal melakukan perubahan pada table model yang isinya adalah Collection yang telah didapat dari hasil load Table Mahasiswa tersebut, kurang lebih seperti ini:
private void updateTable(){
MahasiswaDao mahasiswaDao = SpringUtilities.getMahasiswaDao();
ArrayList<Mahasiswa> list = mahasiswaDao.selectAll();
TableModel model = new TableMahasiswaModel(list);
tblMahasiswa.setModel(model);
}Nah, sekarang kita kembali ke tampilan ui kita, di dalam class MahasiswaPanel ada 4 aksi JButton, kurang lebih seperti ini :
@Override
public void actionPerformed(ActionEvent e) {
Object obj = e.getSource();
if(obj == btnSave){
}
if(obj == btnClear){
}
if(obj == btnUpdate){
}
if(obj == btnDelete){
}
}
1. Save
di dalam aksi Button Save, kita hanya perlu menyisipkan code :
if(obj == btnSave){
Mahasiswa mahasiswa = new Mahasiswa();
mahasiswa.setNim(txtNIM.getText());
mahasiswa.setNama(txtNama.getText());
mahasiswa.setTempat(txtTmpt.getText());
mahasiswa.setTanggal_lahir(dateChooser.getDate());
mahasiswa.setJurusan((String)cmbJurusan.getSelectedItem());
mahasiswa.setJenkel((String)cmbJenkel.getSelectedItem());
mahasiswa.setAlamat(arAlamat.getText());
MahasiswaDao mahasiswaDao = SpringUtilities.getMahasiswaDao();
mahasiswaDao.insertMahasiswa(mahasiswa);
updateTable();
}@Override
@Transactional(readOnly=false, propagation=Propagation.REQUIRES_NEW)
public void insertMahasiswa(Mahasiswa mahasiswa) {
try {
getHibernateTemplate().save(mahasiswa);
} catch (Exception e) {
e.printStackTrace();
}
}
2. Update
if(obj == btnUpdate){
Mahasiswa mahasiswa = new Mahasiswa();
mahasiswa.setNim(txtNIM.getText());
mahasiswa.setNama(txtNama.getText());
mahasiswa.setTempat(txtTmpt.getText());
mahasiswa.setTanggal_lahir(dateChooser.getDate());
mahasiswa.setJurusan((String)cmbJurusan.getSelectedItem());
mahasiswa.setJenkel((String)cmbJenkel.getSelectedItem());
mahasiswa.setAlamat(arAlamat.getText());
MahasiswaDao mahasiswaDao = SpringUtilities.getMahasiswaDao();
mahasiswaDao.updateMahasiswa(mahasiswa);
updateTable();
}@Override
@Transactional(readOnly=false, propagation=Propagation.REQUIRES_NEW)
public void updateMahasiswa(Mahasiswa mahasiswa) {
try {
getHibernateTemplate().update(mahasiswa);
} catch (Exception e) {
e.printStackTrace();
}
}3. Delete
if(obj == btnDelete){
MahasiswaDao mahasiswaDao = SpringUtilities.getMahasiswaDao();
Mahasiswa mahasiswa = mahasiswaDao.getMahasiswa(txtNIM.getText());
mahasiswaDao.deleteMahasiswa(mahasiswa);
updateTable();
}@SuppressWarnings("unchecked")
@Override
@Transactional(readOnly=true)
public Mahasiswa getMahasiswa(final String mahasiswa) {
try {
Object obj = getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session) throws HibernateException,
SQLException {
return session.createQuery("from Mahasiswa where nim = :nim").setParameter("nim", mahasiswa).uniqueResult();
}
});
if(obj == null){
throw new Exception("Gagal Menghapus data mahasiswa");
}else{
return (Mahasiswa) obj;
}
} catch (Exception e) {
e.printStackTrace();
return null;
}
}@Override
@Transactional(readOnly=false, propagation=Propagation.REQUIRES_NEW)
public void deleteMahasiswa(Mahasiswa mahasiswa) {
try {
getHibernateTemplate().delete(mahasiswa);
} catch (Exception e) {
e.printStackTrace();
}
}Seperti yang kita lihat dalam code diatas, kita tidak perlu lagi memulai session, commit, menutup session, dll. Semuanya sudah diatur di dalam HibernateTemplate, Transaction sudah di handle oleh Spring. Inilah salah satu keunggulan jika kita menggunakan 2 framework ini. Source code akan lebih simple dan lebih mudah dimengerti.
Source code dari artikel Integrasi Spring dan Hibernate ini bisa di download disini. Saya tidak menyertakan library yang digunakan dalam program ini, jadi kamu bisa menambahkan sendiri libary Spring 3.0 dan Hibernate 3.
Oke, artikel ini sudah cukup panjang menurut saya, terima kasih sudah meluangkan waktu mengikutin artikel ini dari awal sampai akhir, kritik dan saran sangat diharapkan untuk kemajuan kita bersama. See You . . .




6 comments
agin
17/04/2010 at 20:16 (UTC 7)
assalamualaikum mas sya bleh minta library hibernate dan springnya ga soalnya pas download ga jadi terus,… kalo bleh sekalian mau minta tutorial spring dan hibernetnya ,…..
insyaallah setelah saya mmbaca artrikel ini saya jadi bersemangat lagi buat nmyusun TA pake framework hibernate ,….
please
kirim ke email saya ya mas ,..
di dark.age79@gmail.com
[Reply]
Kus Andriadi Reply:
April 18th, 2010 at 06:57
mana bisa, file nya terlalu gede, hibernate aja 100mb…ga jadi nya kenapa?
donlod aja spring dsini
terus
donlod hibernate disini
terus untuk tutorial nya kan link donlod nya udah saya siapin di artikel ini paling bawah…..:)
[Reply]
hehe
17/11/2010 at 22:23 (UTC 7)
numpang nanya bos
bedanya kalo dibangun pake swing biasa + koneksi mysql apa ya bos?
kegunaan dan kelebihan hibernate n spring apa ya?
mohon pencerahannya bro
[Reply]
Kus Andriadi Reply:
November 20th, 2010 at 18:30
yah namanya framework kan berarti kerangka nya udah disiapin, jadi kita tinggal pake, kalo pake hibernate ya itu, contoh kalo mau save tinggal objectDao.save(object), kalo mau delete tinggal objectDao.delete(object)…biasanya hibernate buat model, dan spring nya buat controller :)
[Reply]
hehe Reply:
November 22nd, 2010 at 21:11
klo viewnya pake apa bos?
[Reply]
Kus Andriadi Reply:
November 23rd, 2010 at 00:49
ini aplikasi swing….viewnya ya gui nya….
[Reply]