24
Nov
09

Efektif tapi tidak efisien

Saya sedang mengerjakan sebuah aplikasi berbasis web sekarang. Hasil akhirnya adalah sebuah aplikasi manajemen untuk suatu perusahaan. 3 modul besar utama yang dimiliki aplikasi ini, marketing, produksi dan akuntansi. Saya sudah sampai di modul produksi, tetapi masih cukup banyak kekurangan dengan validasi, dan kondisi-kondisi khusus yang dapat muncul kapan saja, dan membuat saya harus mencari pangkal permasalahannya dan mulai memperbaiki masalah tersebut. Baru saja saya mendapat masalah dengan fungsi update data, dimana fungsi itu terdapat dalam scope perulangan. Setiap rencana transaksi database yang akan terjadi memiliki sesi (session). Selama transaksi belum di commit. Rencana ini akan terus ada dalam sesi, hingga menyebabkan rencana trasaksi lain tidak dapat menggunakan sesi tersebut. Jika dipaksakan akan terjadi error (exception).

Pesan kesalahan (exception message):

org.hibernate.NonUniqueObjectException:
a different object with the same identifier value was already
associated with the session: [com.wii.elpro.entity.POInternal#6]

Ide yang pertama kali muncul adalah, saya harus membuat sesi baru untuk transaksi berikutnya dan biarkan transaksi yang lama tetap menggunakan sesi yang sebelumnya. Sayang sekali saya belum tidak menemukan bagaimana caranya. Saya harus memikirkan cara lain. Saya akan mencoba cara terpaksa. Transaksi harus di commit agar sesinya dapat dipakai transaksi lain. Konsekuensinya, dalam proses ini tidak boleh terjadi kesalahan, karena jika terjadi kesalahan di transaksi kedua atau ketiga, transaksi pertama tidak dapa di rollback, karena sudah di commit. Akibatnya data dalam database tidak konsisten.

Yah, cara ini efektif dan semua data dapat ter-update dengan benar. Tapi sayang cara ini membawa konsekuensi… Konsekuensi yang paling mungkin tidak terpenuhi, dan saya pikir tambahan fungsi clear() dan commit() tak terlihat baik. Cara yang tidak efisien. 😦

 

//

Advertisements

0 Responses to “Efektif tapi tidak efisien”



  1. Leave a Comment

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


%d bloggers like this: