JOOQ jen generuje kód. "Magie" to je jen pro někoho, kdo neví, jak to funguje. Taky by to mělo být efektivnější.
Neříkám, že NQ je špatné, naopak, je to dost zajímavá věc… Ale jistou magičnost tomu upřít nelze – v zásadě jde o funkci, která převádí výraz v jednom jazyce na výraz v jiném jazyce (třeba Java → SQL nebo Java → JPQL) a problém je v tom, že definiční obor té funkce je velmi široký (formálně) a obor hodnot je oproti tomu hodně omezený a tak úplně to na sebe nepasuje. Jen malá podmnožina hodnot definičního oboru dává smysl a je rozumně převoditelná na výstup.
Na jednu stranu tedy NQ pomáhá (píšu v Javě, kompilátor mi kontroluje výrazy), ale na druhou stranu škodí – zvyšuje nejistotu (ne vše, co jde zkompilovat, je OK), zatemňuje, přidává další úroveň abstrakce/nepřímosti a klade vyšší nároky na programátora.
Rozhodně nechci NQ zavrhovat, ale přijde mi hloupé odsuzovat nástroje typu JOOQ a považovat je za něco nedostatečného – když právě tyhle nástroje můžou být lepší volbou.