Halo rekan2 pengguna velocity hibernate struts, mohon pencerahannya.
Belakangan ini saya mendapatkan permasalahan dengan hibernate pada
velocity, untuk pengaksessan object graph. Contoh kasus seperti ini.

ada 4 buah POJO yang menampilkan hubungan relasi

    Account                      Profile
+-----------+                 +----------+
| accountId |      lazy       | name     |
| password  | < 1 ------ * >  | address  |
+-----------+                 | phone    |
     ^                        +----------+
     |
     |extends                      DailySalesplan
+-----------+    lazy      +------------------------+
|  salesMan | -----------> |  todaySalesAchievement |
+-----------+              |  todaySalesTarget      |
                           +------------------------+

Pada velocity saya mencoba untuk menampilkan report Harian salesman,
dengan berharap menggunakan mekanisme object graph bertumpu melalui
object Salesman. Yang dilakukan dengan cara

$!salesman.dailySalesplan.todaySalesAchivement
etc..
#foreach($profile in $salesman.profile)
      $!profile.name
      etc...
#end

Permasalahan muncul dikarenakan hibernate Session sudah ditutup saat
Velocity Servlet mencoba mengakses relasi object graph yang lazy.
Sehingga tampilan di halaman velocity yang ada hanyalah text kosong.

Sekedar informasi,.. hibernate session dibuka dan di tutup saat struts
Action di panggil. Setelah itu barulah velocity servlet dipanggil oleh
actionForward.

Saya sudah coba bandingkan dengan mekanisme yang ada di sample
CaveatEmptor .... menggunakan ThreadLocal pattern untuk mengatur
mekanisme Session dan Transaction sebagai interceptor.Akan tetapi
karena CaveatEmptor menggunakan standar Servlet untuk FrontController,
Filter interceptor (filter untuk menutup session dan traksaksi) khusus
ditujukan pada Servlet Controller. Sedangkan velocity dan Struts
terdapat 2 buah Servlet utama yang dipanggil secara bergantian ,...
ActionServlet struts dan VelocityViewServlet untuk velocity.

Kalau interceptor ditempatkan pada ActionServlet menyebabkan object
graph tidak dapat diakses oleh velocity servlet(session sudah
ditutup). Kalau interceptor ditempatkan pada VelocityViewServlet
menyebabkan session tidak akan ditutup sampai actionForward redirect
file *.vm. Kalau interceptor ditempatkan pada kedua - duanya
menyebabkan POJO tidak akan pernah tersimpan kedalam database secara
lengkap,... karena session secara tiba2 tertutup secara bergantian
antara velocity dan atau struts!!!!

FYI :
note : selama ini saya masih manual bikin hibernate session,
transaction di setiap businessService ...... tedeious job .... terlalu
banyak repetisi blok trycatch dan menyebabkan velocity tidak dapat
memanfaatkan mekanisme object graph ..... ('untuk membuat report harus
bikin HSQL untuk setiap halaman velocity') ThreadLocal pattern solusi
tapi tidak kompetibel dengan Struts velocity .... kira2 apa solusinya
???

Thanx in advance.


Kalau mau keluar dari mailing list ini, caranya kirim sebuah email ke [EMAIL PROTECTED]

Jangan lupa, website JUG Indonesia adalah http://www.jug.or.id




Yahoo! Groups Sponsor
ADVERTISEMENT
click here
Web Bug from http://us.adserver.yahoo.com/l?M=315388.5529724.6602080.3001176/D=groups/S=:HM/A=2372354/rand=347018488


Yahoo! Groups Links

Reply via email to