yupe.
yg gue maksud kalau refactor model, paling tidak Criteria bisa adjust dengan
baik, sementara HQL karena dalam bentuk String tidak akan terdeteksi.

2010/2/4 Jecki <jecki...@gmail.com>

>
>
> HQL bisa digunakan untuk NamedQuery yang otomatis akan di-compile pada saat
> hibernate startup. Jadi ini cukup membantu karena mengurangi runtime error
> (tergantung definisi runtime-nya).
>
> Dengan NamedQuery juga berarti HQL bisa memanfaatkan fitur query cache.
> Implementasi di belakangnya mungkin berupa PreparedStatement (ini dugaan
> saja). Jadi query SQL tidak selalu digenerate on the fly, tapi hanya sekali
> saja CMIIW.
>
> Criteria otomotatis tidak mendapatkan manfaat dari NamedQuery. Jadi SQL
> selalu digenerate on the fly pada saat dipanggil. Keuntungannya sangat
> dinamis karena field yang akan di-compare bisa disusun saat runtime,
> tergantung kondisi2 yang dibutuhkan.
>
> Sepertinya untuk soal refactoring Criteria juga tidak membantu banyak.
> Hanya bisa untuk refactoring class. Tapi kalau sudah refactoring field
> sepertinya sama saja dengan HQL. Jadi untuk kasus ini safety net yang tepat
> adalah Unit Test.
>
>
> 2010/2/4 Daniel Baktiar <dbakt...@gmail.com>
>
>
>>
>> menurut gue:
>>
>> kalau masih bisa pakai Criteria, lebih baik pakai Criteria. ada lebih
>> banyak safeguard kalau menggunakan Criteria, walaupun belum mencapai apa yg
>> diperlukan di tingkat ideal. alasannya maintanability.
>>
>>
>> Criteria menggunakan java object, sehingga kalau model berubah, type
>> checking dan refactoring berjalan dengan baik.
>>
>> bila menggunakan HQL, perubahan type, refactor dsb, akan gagal pada saat
>> run time, bukan pada saat compile time.
>>
>> kalau untuk maintainability dan source code sudah ribuan class, disuruh
>> memilih compile time error atau runtime error, saya akan pilih warning
>> compile time.
>>
>> sekali lagi, seperti disebutkan di atas, walaupun menggunakan Criteria
>> tidak menjamin bahwa semua perubahan yang tidak valid akan membuat compile
>> time error bila menggunakan Criteria, tetapi masih lebih baik daripada
>> menggunakan HQL. untuk HQL sebagian besar ketidakkonsistenan yg diakibatkan
>> perubahan hanya akan muncul saat runtime.
>>
>>
>> ada juga hal yang positif bila  menggunakan HQL semua, semua coding query
>> akan memiliki konsistensi bentuk. query menggunakan Criteria bentuknya lebih
>> variatif. dan bahasa HQL lebih powerful (bisa menentukan join criteria dan
>> fetch strategy etc).
>>
>>
>  
>



-- 
-o--o---( ^  ^ )---o--o-
Speed Optimization: Seek and ye shall find!
In case it isn't in the cache yet, too bad, you've to wait 40x longer.
Daniel Baktiar (http://dbaktiar.wordpress.com)

Kirim email ke