Dynamic Field dengan Hashtable

Yeay! Akhirnya jadi juga database configuration buatan saya. Terinspirasi dari IBM Maximo untuk handle dynamic field di setiap object. Mungkin jika yang ‘katam’ dengan OOP sering membuat class untuk merepresentasikan table atau object, di dalamnya terdapat banyak attribute serta setter getter untuk setiap field yang terdapat di dalam table atau object tersebut. Benar tidak?

Saya rasa sih sebetulnya ringkas plus predefined untuk tipe data dan data akses yang lebih terstruktur. Nah tapi, di sini saya memiliki kendala ketika aplikasi yang dibangung menjadi framework untuk menjadi aplikasi yang lain? Mau tidak mau berarti akan merubah dari setiap core class agar dapat menangani perubahan yang diinginkan. Misal hapus fieldnya dari class tersebut, tambah fieldnya, ataupun merubah tipe datanya.

Nah di sini saya menggunakan Hashtable sebagai solusi, berbekal pengalaman kerja di tempat sekarang saya teringat dynamic field di IBM Maximo. Coba bandingkan antara :

object.setValue("id","001XXDDYY");
object.setValue("name","Djiangkrik");
String id = object.getValue("id");

dengan

object.setId("001XXDDYY");
object.setName("Djiangkrik");
String id = object.getId();

Mana yang dirasa lebih ringkas ketika development? Saya rasa yang code bagian pertama akan jadi pertimbangan karena lebih flexible bukan? Berbeda ketika harus membuat property satu per satu seperti di code bagian bawah. Bayangkan ketika custom core aplikasi yang dapat berubah-ubah kita merubah satu per satu property di setiap class bean dan class transaksi dibandingkan cukupΒ dengan hanya merubah di class transaksi dengan keyword method setValue tanpa harus merubah beannya.

Method setValue yang ada di benak saya adalah seperti ini di dalam class beannya :

public class BaseObject {

	public Hashtable<String, Object> value;
	
	public BaseObject(){
		this.value = new Hashtable<String, Object>();
	}
	
	public void setValue(String key, Object object){
		this.value.put(key, object);
	}
	
	public Object getValue(){
		return this.value;
	}
	
}

Dengan hashtable, semua data otomatis diolah seperti di dalam ‘table’ (Red. collection) layaknya sistem basis data. Ketika ditemukan ada key yang sama tetapi data berbeda maka otomatis mengupdate data yang lama dengan key tersebut, sedangkan ketika key tidak ditemukan maka akan append data baru. Kedepannya semoga teknologi dynamic object lebih mantap. Say goodbye untuk setter getter yang seabreg dan ribet kalau berubah sana sini. Hanya saja kelemahan dari dynamic ini adalah tidak adanya predefined data type. Sehingga perlu cek kembali instance type ofnya. Apakah ada pendapat lain?

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s