«

»

Mar 19

[Java] Integrasi Spring + Hibernate Framework (Part 3)

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 :

  1. [Java] Integrasi Spring + Hibernate Framework (Part 1)
  2. [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 :

Save   
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

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

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

  1. agin

    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:

    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]

  2. hehe

    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:

    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:

    klo viewnya pake apa bos?

    [Reply]

    Kus Andriadi Reply:

    ini aplikasi swing….viewnya ya gui nya….

    [Reply]

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Get Adobe Flash playerPlugin by wpburn.com wordpress themes