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)