Quaere lebih mirip hibernate criteria API yang dibubuhin fluent interface.
Gak strong type n penuh magic string dimana2.
E.g.
Iterable contacts = from("customer").in(customers)
.where( and(lt("customer.getDateOfBirth", date17YearsAgo),
eq("customer.getAddress().getCountry()", "Indonesia"))
select("customer.getContactDetail()");

for (Group group : groups) {
}

Sama sekali gak strong type. Objective utama yg pengen dicapai dari Linq
justru sama sekali gak disentuh:
1. type-safety, compile time check
2. auto-completion
3. refactoring

Sebenernya gak terlalu susah buat bikin criteria API yang strong type kayak
NHibernate Query Generator dengan ngandalin code-generator. Misalnya kalo di
java maybe:
Interable contacts = query(customer,
   Where.Customer.getAddress().getCountry() == "Indonesia"
   && Where.Customer.getDateOfBirth < date17YearsAgo)
.select("getContactDetail()");

Ini cuma wrapper di atas criteria APInya Hibernate, yang bikin strong-type
fluent-interface yang suitable dengan rigid language kayak java dan .net
versi awal2 banget sebelom era Linq. API kayak gini lebih mendekati Linq
daripada Quaere (at least 3 objectives strong-type tercapai). Dan gw masih
gak ngerti napa ini gak pernah diimplement di Hibernate, padahal dah jelas
betapa ridiculousnya pain di HQL dan criteria API.

NHibernate Query Generator sendiri sekarang dah deprecated dan diabandon
sejak LINQ.
E.g. (C#)
Enumerable<ContactDetails> contacts = from customer in customers
   where customer.Address.Country == "Indonesia" && customer.DateOfBirth <
date17YearsAgo
   select customer.ContactDetail;

Jadi sebenernya hype Quaere sebagai java's Linq adalah menyesatkan n
overstatement. Objective yang pegen dicapai malah gak kesentuh.
Tapi at least benefitnya:
1. fluent syntax yg much better dibanding criteria API
2. persistence ignorance. Kayak Linq, bisa query ke jdbc, orm, array/list,
xml, ldap. Code lo completely agnostic terhadap storage infrastructre yg
dipake. Ini common banget dipake buat agile practice yg develop tanpa
database (cuma pake object list) sampe deket2 mature stage baru DB dan ORM
comes into play. Dan of course buat TDD juga.

Anyway, internal DSL pake static language emang limited. Language kayak Linq
cuma bisa diachieve dengan external DSL. Misalnya pake ANTLR (kayak HQL),
ato bikin Java compiler baru.

2009/5/26 OsCaRz <junz_mis...@yahoo.com.sg>

>
>
> Halo...
>
> Ada yang pernah menggunakan Quaere. Mohon reviewnya. Terus kalau mau
> digunakan buat query MySql gimana ya? Terima kasih...
>
>  
>

Kirim email ke